【发布时间】:2012-07-19 22:28:36
【问题描述】:
到目前为止,我使用 log4j 的方法是这样的:
void writeMethod(String msg){
StackTraceElement[] st = Thread.currentThread().getStackTrace();
Logger log=Logger.getLogger(st[2]);
log.info(msg);
}
这与属性一起,允许我在日志文件中显示调用 write 方法的类/方法并且它工作正常,只要每次应用程序运行只需要一个日志文件。现在我每个应用程序有更多线程,并且每个应用程序需要超过 1 个日志文件(数量实际上可以是无限的)。 由于我希望拥有多个日志文件,因此我在应用程序启动时自动创建 log4j.properties 文件,然后为应用程序的每个线程使用特定的附加程序。
所以附加程序被命名为l0, l1, l2 ....,每个附加程序写入不同的日志文件。
这意味着我现在正在使用类似的东西:
void writeMethod(int threadNr ,String msg){
Logger log=Logger.getLogger("l"+threadNr);
log.info(msg);
}
我的问题是:我可以使用第二种方法并且还具有能够编写调用日志记录方法的方法/类的先前功能吗?
【问题讨论】:
-
这样做有什么特别的原因吗? Log4j可以配置输出类、方法和线程名。
-
你能提供这样的例子吗?因为第二个版本只是写 l0, l1 当我告诉它输出类时。
-
下面我的回答能回答你的问题吗?