log4j 日志文件名?
我们有几个同时运行的作业,它们必须对 log4j 使用相同的配置信息。它们都使用相同的追加器将日志转储到一个文件中。有没有办法让每个作业动态命名其日志文件,以便它们保持独立?
谢谢
汤姆
我们有几个同时运行的作业,它们必须对 log4j 使用相同的配置信息。它们都使用相同的追加器将日志转储到一个文件中。有没有办法让每个作业动态命名其日志文件,以便它们保持独立?
谢谢
汤姆
能否为每个作业传递一个 Java 系统属性?如果是这样,您可以像这样参数化:
java -Dmy_var=somevalue my.job.Classname
然后在您的 log4j.properties 中:
log4j.appender.A.File=${my_var}/A.log
您可以使用主机环境中的值(例如)填充 Java 系统属性,该值将唯一标识作业的实例。
如果作业名称是提前知道的,则可以在执行 getLogger() 调用时包含作业名称。然后,您可以将不同的追加器绑定到具有不同文件名(或其他目标)的不同记录器。
如果无法提前知道作业名称,则可以在运行时配置记录器,而不是使用配置文件:
FileAppender appender = new FileAppender();
appender.setFileName(...);
appender.setLayout(...);
Logger logger = Logger.getLogger("com.company.job."+jobName);
logger.addAppender(appender);