2016-09-02 33 views
2

我正在嘗試配置Chronicle記錄器使用擴散並且日誌不起作用。相反,它只是提供了以下錯誤:使用Chronicle記錄器時出現擴散錯誤

2016-08-26 15:56:26,316 main ERROR appenders contains an invalid element or attribute "appender" 
2016-08-26 15:56:26,329 main ERROR Unable to locate appender "STDOUT" for logger config 「root" 

這是導致此錯誤的配置:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration packages="net.openhft.chronicle.logger,net.openhft.chronicle.logger.log4j2"> 
    <appenders> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </layout> 
     </appender> 
    </appenders> 
    <loggers> 
     <root level="all"> 
      <appender-ref ref="STDOUT"/> 
     </root> 
     <logger name="net.openhft" level="warn"/> 
    </loggers> 
</configuration> 

我從一個單獨的項目中,它的工作原理,所以應該努力複製這個配置。我究竟做錯了什麼?

在此先感謝。

回答

2

您已從使用log4j的項目複製了appender元素,但擴散使用log4j2,它不支持此元素。

對於它的工作,你可以像這樣的東西替換你的配置:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration packages="net.openhft.chronicle.logger,net.openhft.chronicle.logger.log4j2"> 
    <Properties> 
     <Property name="diffusion.log.dir">../logs</Property> 
     <Property name="log.dir">${sd:diffusion.log.dir}</Property> 
     <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 
     </Property> 
    </Properties> 
    <appenders> 
     <Console name="console"> 
      <PatternLayout pattern="$%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </Console> 
    </appenders> 
    <loggers> 
     <AsyncRoot level="warn" includeLocation="false"> 
      <AppenderRef ref="console" /> 
     </AsyncRoot> 
    </loggers> 
</configuration> 

值得注意的是,你只配置控制檯記錄,並且什麼都不會被寫入日誌文件,這意味着如果某事發生在你的服務器上,這會很容易丟失你的日誌歷史記錄。出於這個原因,我建議你也登錄到一個文件。

default log4j2.xml supplied with Diffusion使用RollingRandomAccessFile appender寫入文件,並引用AsyncRoot元素中的appendder。

相關問題