繁体   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