log4j2 Java中的动态日志文件名

时间:2018-05-24 09:35:23

标签: java log4j log4j2 rollingfileappender

我有一个简单的问题。

如何从代码动态提供日志文件名?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">

<Appenders>
    <RollingFile name="RollingFile" fileName="${logfilename}.log"
                 filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
            <SizeBasedTriggeringPolicy size="250 MB"/>
        </Policies>
    </RollingFile>
</Appenders>

<Loggers>
    <Root level="error">
        <AppenderRef ref="RollingFile"/>
    </Root>
</Loggers>

此处文件名为 logs / app.log

  • 如何在文件名中附加日期和时间使其动态化?虽然应用了模式,但它不起作用。
  • 此处日志是log4j库自动创建的目录,是否也是动态的?

编辑在参数fileName中,我已放置${logfilename}.log并设置系统属性如下:

System.setProperty("logfilename", "a_cool_logname");

现在它正在创建名为${logfilename}.log的文件,这绝对不是必需的。

由于

1 个答案:

答案 0 :(得分:0)

**属性文件看起来像这样**

    log4j.rootLogger=DEBUG, FA


#Console Appender WE WRE NOT USING IT
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{dd MM yy HH:mm} %-5p  %m%n


#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=${fName}
#log4j.appender.FA.MaxFileSize=5MB
#log4j.appender.FA.MaxBackupIndex=3
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=%d{dd MM yy HH:mm} %8p  %10m%n 

# Set the logger level of File Appender to WARN
log4j.appender.FA.Threshold = INFO
log4j.appender.FA.Threshold = DEBUG

**并在JAVA中设置属性**

System.setProperty("fName", "d:\\siemens\\" + getDateTime() + c.getSimpleName() +".log");
        PropertyConfigurator.configure("log4j.properties");

如果您需要进一步查询,请告知我们