簡體   English   中英

Java中同一文件中同一行以及不同行中的多個日志記錄

[英]Multiple loggings in the same line as well as in different lines in same file in java

我是使用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,空)。

但是我還有其他日志語句應該以正常行為打印

例:

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

在主要方法中

輸入第一個功能

您可以使用String.format(String, Object...)和一對三元組 就像是,

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);
}

正確的log4j習慣用法(1.2版)為

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

它將正確處理空值。 在禁用調試級別的情況下,該條件將防止任何性能下降。

您可能想使用一些更現代的日志記錄api,例如slf4j,logback或log4j2。可讀性會更好:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM