2

要求是更改特定用户的日志级别。在上下文级别使用 DynamicThresholdFilter 确实有效,但适用于所有记录器。我的要求是仅将其应用于特定的记录器而不影响其他记录器。使用此配置文件,所有附加程序都在调试级别记录。

这就是我的文件的样子。关于应用相同过滤器或任何其他可以为特定记录器启用调试日志记录的过滤器的任何建议?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" monitorInterval="30">
    <Properties>
        ---------------------
    </Properties>
    <DynamicThresholdFilter
        key="customLogging-enabled" onMatch="ACCEPT" onMismatch="DENY">
        <KeyValuePair key="true" value="DEBUG" />
    </DynamicThresholdFilter>
    <Appenders>
        <Console name="consoleAppender" target="SYSTEM_OUT"
            follow="true">
            <PatternLayout pattern="${CONSOLE_LOG_PATTERN}" />
        </Console>

        <RollingFile name="customLoggingAppender"
            fileName="${sys:log_dir}/customLogging.log"
            filePattern="customLogging-%d{yyyy-MM-dd}-%i.log" append="true">
            <ThreadContextMapFilter onMatch="DENY"
                onMismatch="NEUTRAL">
                <KeyValuePair key="customLogging-enabled" value="true" />
            </ThreadContextMapFilter>
            <PatternLayout>
                .......................
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="5000KB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>

        <RollingFile name="standardAppender"
            fileName="${sys:log_dir}/standard.log"
            filePattern="standard-%d{yyyy-MM-dd}-%i.log" append="true">
            <PatternLayout>
                ....................
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="5000KB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>

        .......More appenders here

    </Appenders>
    <Loggers>

        <Root level="ERROR">
            <AppenderRef ref="consoleAppender" />
            <AppenderRef ref="standardAppender" />
        </Root>

        <!-- DEFAULTED TO ROOT LOGGER - START -->
        <Logger name="com.abc" level="ERROR">
            <AppenderRef ref="customLoggingAppender" />
        </Logger>

        <Logger name="com.abc.helpers" level="ERROR">
            <AppenderRef ref="customLoggingAppender" />
        </Logger>

        <Logger name="com.abc.business.persist.utils" level="ERROR" />

        <Logger
            name="com.abc.business.persist.ManagerFactory"
            level="ERROR" />

        <Logger name="com.da.handlers" level="ERROR" additivity="false">
            <AppenderRef ref="abcAppender" />
            <AppenderRef ref="customLoggingAppender" />
        </Logger>

        <Logger name="com.handler.audit" level="ERROR"
            additivity="false">
            <AppenderRef ref="xyzAppender" />
        </Logger>
    </Loggers>
</Configuration>

我尝试在附加程序级别应用相同的过滤器,但它不起作用

<RollingFile name="customLoggingAppender" fileName="${sys:log_dir}/customLogging.log" filePattern="customLogging-%d{yyyy-MM-dd}-%i.log" append="true">
            <DynamicThresholdFilter key="customLogging-enabled" onMatch="ACCEPT" onMismatch="DENY">
              <KeyValuePair key="true" value="DEBUG"/>
            </DynamicThresholdFilter>
            <PatternLayout>
               ....
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="5000KB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />     
        </RollingFile>

我的期望是只有引用此附加程序的记录器才会在调试级别记录

4

0 回答 0