0

我有一个 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 标记。任何帮助表示赞赏。

4

1 回答 1

0

您不应该将调试日志添加到您的任何文件中,因为您的任何记录器都未配置为接受调试消息。如果您在文件中看到它们,则未使用此配置。您可以通过将 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>
于 2020-03-13T00:52:36.360 回答