在 Diffusion 中使用 Chronicle Logger 时出错
Error using Chronicle Logger with Diffusion
我正在尝试将编年史记录器配置为使用扩散,但日志不起作用。相反,它只是给出以下错误:
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>
我从一个单独的项目中复制了这个配置,所以它应该可以工作。我究竟做错了什么?
提前致谢。
您从使用 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
附加程序写入文件并在 AsyncRoot
元素中引用该附加程序。
我正在尝试将编年史记录器配置为使用扩散,但日志不起作用。相反,它只是给出以下错误:
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>
我从一个单独的项目中复制了这个配置,所以它应该可以工作。我究竟做错了什么?
提前致谢。
您从使用 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
附加程序写入文件并在 AsyncRoot
元素中引用该附加程序。