使用相同log4j.properties的多个进程

时间:2018-01-23 10:10:48

标签: java slf4j log4j2

我实际上正在使用slf4j / log4j进行项目。 为此,我们使用log4j.properties文件来配置日志记录,尤其是DailyRollingFileAppender。

# Root logger option
log4j.rootLogger=INFO, file, stdout

log4j.logger.com.thales.ecosystem=DEBUG,stdout,file
log4j.additivity.com.thales.ecosystem=false

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
# this is set dynamically
log4j.appender.file.File=${log.basedir}/decoders/nm-flight-decoder.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} v${release.version} %-5p %c{1}:%L - %m%n
log4j.appender.file.Append=true

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} v${release.version} %-5p %c{1}:%L - %m%n

在代码中,我们使用loggerFactory:

private static final Logger LOGGER = LoggerFactory.getLogger(xxxxxxxx.class);

但我们现在要处理多个(但数量有限)相同的过程。 所以问题是:我们怎么能有两个进程(同一个类) 每个类只有一个log4j.properties,每个文件写一个,并保留DailyRollingFileAppender? 谢谢!

1 个答案:

答案 0 :(得分:0)

在配置中创建一个属性的文件名,并使用该属性的不同值启动每个进程。

log4j.appender.file.File=${log.basedir}/decoders/${proc}.log

使用-Dproc=nm-flight-decoder启动一个进程,使用不同的值启动另一个进程。

(另外,请考虑升级到Log4j2。Log4j 1.2 has been End of Life since summer 2015(已归档here),并且已知为broken on Java 9(归档here)。)