当前位置: 首页 > 知识库问答 >
问题:

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

浦墨竹
2023-03-14

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

这样做的原因是有一个日志级别,可以用于通过异步记录器及其自己的附加程序记录的特殊事件。

我们不希望将TOAST事件发送给同步根记录器或其他记录器。。但仅限于异步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>

共有1个答案

百里海超
2023-03-14

在我看来,你真的想要一个命名的记录器,而不是自定义级别,因为你只希望你的消息进入一个记录器及其附加程序。也许你应该用更像这样的东西:

<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");
...

否则,如果您必须使用自定义日志级别,那么您可以通过使用阈值过滤器进行过滤来完成您想要的任务。

 类似资料:
  • 我有log4j2.xml,它部分配置为: 但是,跟踪消息并不存在于两个文件附加符(fileinfo/filedebug)中。当我更改FileDebug log level=“TRACE”时,就会出现跟踪消息。

  • 我在spring应用程序中使用log4j2作为我的日志工具。我想为特定的库/包设置不同于根目录的日志级别。例如,我希望< code>org.springframework为INFO,而< code>com.google为WARN。我在< code>log4j2.properties中找到了这个: 我不明白是什么意思?我一直在log4j2文档中找到它,但没有解释那是什么或意味着什么。 如何为特定包添

  • 使用log4j1,我能够控制单个日志记录程序级别,但属性语句似乎不能使用log4j2。我将rootLogger级别设置为DEBUG,并希望通过commons-logging抑制来自authorize.NET的大量调试日志。我正在尝试设置级别,以从http头和有线日志发出警告。 下面是详细配置记录器的log4j文档(参见“配置log4j”) 这是一个示例日志输出: 这是我当前的log4j2.prop

  • 我有这些具体要求: 需要能够登录致命级别 现在,我的实现如下: 这是我的模式布局(在yaml): 以下是我的日志输出: 你知道如何有效地从日志输出中删除“错误”吗? 非常感谢你

  • 问题内容: 我想为我的应用程序使用loglevel TRACE(5),因为我认为这还不够。另外不是我想要的。如何将自定义日志级别添加到Python记录器? 我有以下内容: 在我的代码中,我通过以下方式使用它: 现在我想打电话 在此先感谢您的帮助。 编辑 (2016年12月8日):我[pfa的)可接受答案更改为IMHO,这是基于Eric S的非常好的建议的出色解决方案。 问题答案: @Eric S.