2017-09-06 57 views
1

我在XML中指定了log4j2记录器的文件名,如下所示。所有工作正常,但我得到的错误向log4j2记录器添加文件名

2017年9月6日16:54:类型的org.apache.logging.log4j.core.appender.RandomAccessFileAppender被忽略33496主要误差未知对象“的RandomAccessFile”:尝试将其嵌入:[“Appenders”,“Loggers”,“Properties”,“Scripts”,“CustomLevels”]之一。

<?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

此错误来,因为RandomAccessFileappender<Appenders> XML元素中定义。

下面是定义任何appender包括RandomAccessFileappender的正确方法 -

<?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 appender在任何logger。如果你不会在任何logger中定义它,它将不起作用。