2

我正在尝试将编年史记录器配置为与扩散一起使用,但日志不起作用。相反,它只会给出以下错误:

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>

我从一个可以工作的单独项目中复制了这个配置,所以它应该可以工作。我究竟做错了什么?

提前致谢。

4

1 回答 1

2

您已从使用但不支持此元素的扩散使用appender的项目中复制了该元素。log4jlog4j2

为了让它工作,你可以用这样的东西替换你的配置:

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

值得注意的是,您只配置了控制台日志记录,并且不会将任何内容写入日志文件,这意味着如果您的服务器发生某些事情,很容易丢失您的日志历史记录。出于这个原因,我建议您也登录到文件。

Diffusion 提供的默认 log4j2.xml使用RollingRandomAccessFileappender 写入文件并在AsyncRoot元素中引用该 appender。

于 2016-09-02T11:16:45.543 回答