【问题标题】:Multiple process using the same log4j.properties使用相同 log4j.properties 的多个进程
【发布时间】:2018-07-02 02:47:50
【问题描述】:

我实际上正在使用 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 ? 谢谢!

【问题讨论】:

    标签: java slf4j log4j2


    【解决方案1】:

    将配置中的文件名设为属性,并使用该属性的不同值启动每个进程。

    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)。)

    【讨论】:

    • 谢谢,我会朝这个方向尝试。
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多