【问题标题】:Multiple loggings in the same line as well as in different lines in same file in javajava中同一文件中同一行以及不同行中的多个日志记录
【发布时间】:2016-02-02 00:02:58
【问题描述】:

我是使用 Log4j 记录器的新手,我想将一些日志记录语句打印到 在同一行。

例子:

log.debug(root.data);
    if(root.left!=null)
        log.debug("("+root.left.data);
    else if(root.left==null)
        log.debug("null");
    if(root.right!=null)
        log(root.right.data+")");
    else if(root.right!=null)
        log.debug("null)");  

它会像这样打印 (3,

                null)

但我想这样打印 (3,null)。

但我还有其他日志语句应该以正常行为打印

例子:

void function()
{
log.debug("Entered First Function");
}
public static void Main()
{
log.debug("In Main Method");
}

在主方法中

进入第一个函数

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    您可以使用String.format(String, Object...) 和一对ternaries。类似的,

    log.debug(String.format("(%s, %s)", //
            root.left == null ? "null" : root.left.data, //
            root.right == null ? "null" : root.right.data));
    

    没有像

    这样的三元组
    if (root.right == null || root.left == null) {
        if (root.left == null) {
            if (root.right == null) {
                log.debug("(null, null)");
            } else {
                log.debug(String.format("(null, %s)", root.right.data);
            }
        } else {
            log.debug(String.format("(%s, null)", root.left.data);
        }
    } else {
        log.debug(String.format("(%s, %s)", root.left.data, root.right.data);
    }
    

    【讨论】:

    • 这是一个如何不使用三元组的完美示例。乍一看,该代码不合理。
    • 在我发表评论后代码已被修改。
    【解决方案2】:

    正确的 log4j 成语(1.2 版)应该是

    if (log.isDebugEnabled()) {
      log.debug("(" + root.left.data + "," + root.right.data + ")");
    }
    

    它将正确处理空值。如果禁用调试级别,该条件将防止任何性能损失。

    您可能想要使用一些更现代的日志记录 API,例如 slf4j、logback 或 log4j 2。可读性会更好:

    log.debug("({},{})", root.left.data, root.right.data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 2021-06-18
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多