簡體   English   中英

如何在log4j中打印自定義前綴

[英]How to print customized prefix in log4j

默認情況下,log4j將打印類名稱作為log的前綴。 現在,我的情況是在一個JVM中有多個類A的實例,並且該類中有一個日志。 我想要以下日志,以便讓我知道哪個實例正在打印此行日志? 我該如何實現?

2014-09-09 13:07:08,512 INFO com.myexample.A(id1)
2014-09-09 13:07:08,514 INFO com.myexample.A(id2)

我認為您無法通過log4j.properties文件中的設置來做到這一點。 在此處查看可能的變體。

但是您可以解決如下問題:

class A {
    Logger LOGGER;

    A(String id) {
        LOGGER = Logger.getLogger(getClass() + "(" + id + ")");
    }

    void myMethod() {
        LOGGER.info("Hello!");
    }
}

最簡單的方法是將所需的ID添加到您的日志消息中:

if (logger.isDebugEnabled()) {
  int id = this.hashCode(); // Invoke ID getter method
  logger.debug( String.format("[ %d ] My log message with ID", id) );
} 

暫無
暫無

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

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