如何在log4j中打印自定义前缀

zjf*_*fdu 0 java 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)
Run Code Online (Sandbox Code Playgroud)

Dmi*_*off 5

我认为你不能通过 log4j.properties 文件中的设置来做到这一点。请参阅此处可能的变体。

但你可以这样解决问题:

class A {
    Logger LOGGER;

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

    void myMethod() {
        LOGGER.info("Hello!");
    }
}
Run Code Online (Sandbox Code Playgroud)