Как записать разные уровни журнала в разные файлы прокрутки в log4j2 - PullRequest
0 голосов
/ 13 марта 2020

У меня есть log4j2. xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
    <Configuration>
        <Properties>
            <Property name="dir" value="/var/log/sunverge" />
            <Property name="file" value="maggie.log" />
            <Property name="eatonemcbfile" value="eaton.log" />
        </Properties>

        <Appenders>
            <Console name="STDOUT" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{ISO8601} %5p [%t] %c - %m%n" />
            </Console>
            <RollingFile name="file" fileName="${dir}/${file}"
                filePattern="${dir}/${file}.%d{yyyy-MM-dd}">
                <PatternLayout>
                    <Pattern>%d{ISO8601} %5p [%t] %c - %m%n</Pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" />
                </Policies>
            </RollingFile>
            <RollingFile name="eaton"
                fileName="${dir}/${eatonemcbfile}"
                filePattern="${dir}/${eatonemcbfile}.%d{yyyy-MM-dd}">
                <PatternLayout>
                    <Pattern name="ConversionPattern"> %d{ISO8601} %5p [%t] %c - %m%n</Pattern>
                </PatternLayout>
                <ThresholdFilter level="debug"/>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" />
                </Policies>
            </RollingFile>
        </Appenders>

        <Loggers>
            <Root level="warn">
                <AppenderRef ref="file" />
            </Root>
            <logger name="com.sunverge.devices.eaton.emcb" level="info">
                <AppenderRef ref="eaton" />
                <AppenderRef ref="file" />
            </logger>
        </Loggers>
    </Configuration>

Поэтому я установил порог для отладки eaton.log, но оба они записывают уровень отладки. По какой-то причине я не хочу добавлять тег ThresholdFilter для другого файла. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 13 марта 2020

Вы не должны получать журналы отладки ни для одного из ваших файлов, поскольку ни один из ваших регистраторов не настроен на прием сообщений отладки. Если вы видите их в файле, то эта конфигурация не используется. Вы можете проверить, используется ли он или нет, добавив status = "debug" к элементу конфигурации и посмотрев, что настраивает Log4j. Если вы не видите вывод отладки log4j, то это явный признак того, что файл конфигурации не используется. Вы также можете добавить -Dlog4j2.debug = true в командную строку, что приведет к выводу журналов log4j. Вы можете проверить, чтобы увидеть, откуда исходит конфигурация.

Я бы порекомендовал изменить вашу конфигурацию на:

    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ISO8601} %5p [%t] %c - %m%n" />
        </Console>
        <RollingFile name="file" fileName="${dir}/${file}"
            filePattern="${dir}/${file}.%d{yyyy-MM-dd}">
            <PatternLayout>
                <Pattern>%d{ISO8601} %5p [%t] %c - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
            </Policies>
        </RollingFile>
        <RollingFile name="eaton"
            fileName="${dir}/${eatonemcbfile}"
            filePattern="${dir}/${eatonemcbfile}.%d{yyyy-MM-dd}">
            <PatternLayout>
                <Pattern name="ConversionPattern"> %d{ISO8601} %5p [%t] %c - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="warn">
            <AppenderRef ref="file" />
        </Root>
        <logger name="com.sunverge.devices.eaton.emcb" level="debug" additivity="false">
            <AppenderRef ref="eaton" level="debug"/>
            <AppenderRef ref="file" level="info"/>
        </logger>
    </Loggers>
</Configuration>
...