0

到目前为止,我已经使用了这样的 log4j 方法:

void writeMethod(String msg){
  StackTraceElement[] st = Thread.currentThread().getStackTrace();
  Logger log=Logger.getLogger(st[2]);
  log.info(msg);
}

这与属性一起,允许我在日志文件中显示调用 write 方法的类/方法并且它工作正常,只要每次应用程序运行只需要一个日志文件。现在我每个应用程序有更多线程,并且每个应用程序需要超过 1 个日志文件(数量实际上可以是无限的)。由于我希望拥有多个日志文件,因此我在应用程序启动时自动创建 log4j.properties 文件,然后为应用程序的每个线程使用特定的附加程序。

所以 appender 的名字是一样的l0, l1, l2 ....,每个都写入不同的日志文件。

这意味着我现在正在使用类似的东西:

void writeMethod(int threadNr ,String msg){

      Logger log=Logger.getLogger("l"+threadNr);
      log.info(msg);
    }

我的问题是:我可以使用第二种方法并且还具有能够编写调用日志记录方法的方法/类的先前功能吗?

4

1 回答 1

1

我使用属性文件来配置我的 log4j。布局示例...

log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

这是log4j 参考的链接。如果您想要每个线程的文件,您总是可以创建多个附加程序并为每个附加程序创建记录器。例如。

// In your log4j config
log4j.logger.1=DEBUG

// In you code
Logger log = Logger.getLogger("1.ClassName");
于 2012-07-19T14:28:36.657 回答