繁体   English   中英

log4j2中的自定义日志级别问题

[英]Custom log level issue in log4j2

根记录器配置为INFO级别的同步记录器。 我也有几个异步记录器。 其中一个异步记录器配置为自定义的更高日志级别TOAST (789)。 这高于TRACE水平(600)。

这样做的原因是具有可用于通过异步记录器和它们自己的appender记录的特殊事件的日志级别。

我们不希望TOAST事件转到同步根记录器或其他记录器......但仅限于Async TOAST记录器及其相应的追加器..是否可能?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="120" packages=“com.pack.toast”>
     <CustomLevels>
        <CustomLevel name=“TOAST” intLevel=“789” />
    </CustomLevels>

    <Appenders>
        <RollingFile fileName="${sys:catalina.base}/logs/packiu.log"
            append="true" name="DRFILE"
            filePattern="${sys:catalina.base}/logs/packiu-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout>
                <Pattern>%d [%t] %c %M - %p: %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="30" />
        </RollingFile>          
        <RollingFile name="RollingFile" fileName="/Users/toasty/logs/roll_file_app.log"
                     filePattern="logs/app-%d{MM-dd-yyyy}.log.gz" immediateFlush="true" >
               <PatternLayout>
                        <pattern>%m%n</pattern>
              </PatternLayout>
              <TimeBasedTriggeringPolicy />
        </RollingFile>
        <Rewrite name="Rewrite" ignoreExceptions = "true"  >
            <ToastAppenderPolicy toastNeeded="true">
            </ToastAppenderPolicy>
            <AppenderRef ref="RollingFile"/>
        </Rewrite>

    </Appenders>
    <Loggers>
        <Logger name="net.rubyeye" level="off" />
        <Logger name="com.google.code" level="off" />               

        <AsyncLogger name="com.pack.toast.ToastLoggerImpl" level=“TOAST” includeLocation="true">
            <AppenderRef ref="Rewrite" />
        </AsyncLogger>

        <Root level="info">
            <AppenderRef ref="DRFILE" />
        </Root>

    </Loggers>
</Configuration>

这听起来像你真的想要一个命名的记录器而不是自定义级别,因为你只希望你的消息转到一个记录器及其appender。 也许你应该使用更像的东西:

<AsyncLogger name="TOAST_LOGGER" level=“INFO” includeLocation="true">
    <AppenderRef ref="Rewrite" />
</AsyncLogger>

然后在你的代码中

private static final Logger TOAST_LOGGER = LogManager.getLogger("TOAST_LOGGER");
...
TOAST_LOGGER.info("Toast message");
...

否则,如果必须使用自定义日志级别,则可以通过使用阈值过滤器进行过滤来完成所需的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM