将文件名添加到log4j2记录器

时间:2017-09-06 11:31:40

标签: log4j2

我在XML中为log4j2 logger指定文件名,如下所示。一切正常,但我得到了错误

  

2017-09-06 16:54:33,496主要错误org.apache.logging.log4j.core.appender.RandomAccessFileAppender类型的未知对象“RandomAccessFile”被忽略:尝试将其嵌套在以下其中一个中:[“Appenders”, “记录器”,“属性”,“脚本”,“自定义级别”]。

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration package="log4j.test" 
                   status="WARN">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{dd/MM/yyyy HH:mm:ss} %c %m%n"/>
            </Console>
        </Appenders>
       <RandomAccessFile  name="FILE" fileName="${sys:log4j.saveDirectory}/CMSAutomation.${date:yyyy-MM-dd_hh-mm-ss}.log" append="true" immediateFlush="false">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}  %-6p  %C{1}.%t:%L  >>> %m%n"/>
        </RandomAccessFile >
        <Loggers>
            <Logger name="log4j.test.Log4jTest" level="debug">
                <AppenderRef ref="Console"/>
            </Logger>
            <Root level="trace">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>

1 个答案:

答案 0 :(得分:1)

此错误即将发生,因为RandomAccessFile appender未在<Appenders> XML元素中定义。

以下是定义任何appender的正确方法,包括RandomAccessFile appender -

<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test" 
               status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{dd/MM/yyyy HH:mm:ss} %c %m%n"/>
        </Console>
        <RandomAccessFile  name="FILE" fileName="${sys:log4j.saveDirectory}/CMSAutomation.${date:yyyy-MM-dd_hh-mm-ss}.log" append="true" immediateFlush="false">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}  %-6p  %C{1}.%t:%L  >>> %m%n"/>
        </RandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="log4j.test.Log4jTest" level="debug">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="trace">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

您可以在log4j2文档here中查看相同内容。

另外一点,您没有在任何RandomAccessFile中使用logger appender。如果您不在任何logger中定义它,它将无效。