Ошибка при использовании Chronicle Logger с диффузией

Я пытаюсь настроить журнал хроники для работы с диффузией и журналы не работают. Вместо этого он просто выдает следующую ошибку:

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>

Я скопировал этот конфиг из отдельного проекта, где он работает, поэтому он должен работать. Что я делаю неправильно?

Заранее спасибо.

1 ответ

Решение

Вы скопировали appender элемент из проекта, который использует log4j но диффузия использует 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>

Стоит отметить, что вы настроили только ведение журнала консоли, и ничего не будет записано в файл журнала, что означает, что если что-то случится с вашим сервером, будет очень легко потерять историю вашего журнала. По этой причине я рекомендую вам также войти в файл.

Log4j2.xml по умолчанию, поставляемый с Diffusion, использует RollingRandomAccessFile заявитель записать в файл и ссылается на этого заявителя в AsyncRoot элемент.

Другие вопросы по тегам