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

向Logback < configuration debug = " true " >输出添加阈值过滤器?

孙化
2023-03-14

知道如何在Logback本身的调试消息上设置阈值过滤器吗?

<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] [%logger{0}] [%M:%L] - %m%n</pattern>
        </encoder>
    </appender>

    ...

    <root level="TRACE">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ASYNC_SLACK_LOGS" />
    </root>
</configuration>

以上生成详细的调试输出:

16:05:16,479 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:05:16,480 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/W:/JavaProjects/logback-slack-appender/target/test-classes/logback-test.xml]
16:05:16,697 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16:05:16,703 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
...
6:05:16,825 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@2d901eb0 - Registering current configuration as safe fallback point
16:05:17.696 INFO  [main] [SlackAppenderTest] [simulateAPITrouble:19] - This will fail to post to Slack
16:05:18.256 |-ERROR in com.github.maricn.logback.SlackAppender[SLACK_LOGS] - Slack POST request failed: 404 no_team

如何将调试输出限制为仅 Logback 核心错误?例如:

16:05:17.696 INFO  [main] [SlackAppenderTest] [simulateAPITrouble:19] - This will fail to post to Slack
16:05:18.256 |-ERROR in com.github.maricn.logback.SlackAppender[SLACK_LOGS] - Slack POST request failed: 404 no_team

原因是我想在其他人的附加程序(理想情况下是文件附加程序)中捕获各种addError()调用的输出,但我不想在应用程序启动时获取所有详细信息。

共有1个答案

尉迟哲瀚
2023-03-14

这看起来很有希望,但没有控制控制台消息粒度的设置。

<configuration debug="false">
    <statusListener class="ch.qos.logback.core.status.OnErrorConsoleStatusListener" />
    ...

相反,我创建了一个定制的概念验证状态监听器:

import ch.qos.logback.core.status.Status;
import ch.qos.logback.core.status.StatusListener;

public class ErrorStatusListener implements StatusListener
{
    @Override
    public void addStatusEvent( Status status )
    {
        if ( status.getLevel() >= Status.WARN )
            System.out.println( status.getMessage() );
    }
}

现在我也可以控制错误消息,并将它们反馈到Logback管道中,以便由文件附加器拾取。

17:40:32.336 INFO  [main] [SlackAppenderTest] [simulateAPITrouble:21] - This will fail to post to Slack
Slack POST request failed: 404, no_team
 类似资料:
  • 有一个用户集合

  • 问题内容: 我正在使用日期过滤器以某种格式呈现Unix时间戳。我注意到过滤器将本地时区添加到输出中。 有什么方法可以简单地输出确切的时间戳,而无需添加任何时区信息? 输入: (是世界标准时间下午05/15/14 @ 3:30:00) 码: 输出: 我如何使输出从15:30而不是17:30? 问题答案: “ Z”是添加时区信息的内容。至于输出UTC,这似乎是一些混乱的主题-人们似乎倾向于使用mome

  • Output filter plugins operate on a template's output, after the template is loaded and executed, but before the output is displayed. 输出过滤器插件的作用是,在装载并执行完一个模板之后显示模板之前,操作该模板的输出。 stringsmarty_outputfilter

  • 问题内容: 我发现以下代码非常有效,可以让我在Python Shell中查看标准的1%的twitter firehose: 如何添加过滤器以仅分析来自特定位置的推文?我见过人们在其他与Twitter相关的Python代码中添加GPS,但我在Tweepy模块中找不到sapi的任何特定内容。 有任何想法吗? 谢谢 问题答案: 流API不允许同时按位置AND关键字进行过滤。 边界框不充当其他过滤器参数的

  • 我试图定义两个不同的bean(都扩展了AbstractPreAuthenticatedProcessingFilter):一个用于在“开发”配置文件处于活动状态时从请求头(如USER_ID)中抓取一个头,另一个用于在“开发”配置文件不处于活动状态时从请求头中抓取一个JWT。(但从概念上讲,我实际上只是尝试基于bean本身的存在以编程方式注册过滤器)目前,我甚至没有尝试使用概要文件,因为我遇到了一个

  • 问题内容: 我正在使用网络上的标准示例(http://www.20seven.org/journal/2008/11/pdf-generation-with-pisa-in-django.html)将django视图/模板转换为PDF。 是否有一种“简便”的方式将图像(来自URL或服务器上的引用)包括在模板中,以便它们显示在PDF上? 问题答案: 我得到了图像。代码如下: