在特定课程中,关闭其他库的logback日志记录

约翰·蒂姆斯

我成功地使用Spring的@Scheduled注释每隔几秒钟执行一次方法。唯一的问题是由于这种方法,我从Hibernate和Spring获得了很多有关事务等的日志消息。

我希望保持日志记录级别相同,因为我希望收到此信息以用于应用程序中的其他事务。

在执行特定方法时,是否可以通过logback临时禁止其他库的日志记录?

durron597

是的,这可以在每个线程的基础上完成。

您需要使用过滤器MDC(映射的诊断上下文)此解决方案将影响在执行该@Scheduled方法的线程上发生的日志记录

步骤概述

  1. 在您的@Scheduled方法中,向该线程的MDC添加一个条目。
  2. 创建的实现ch.qos.logback.core.filter.Filter<ILoggingEvent>FilterReply.DENY如果在MDC中设置了该条目,则将返回
  3. 在以下位置的<appender>条目中添加对该过滤器的引用logback.xml

步骤1

使您的@Scheduled方法如下所示:

@Scheduled(fixedRate=30000)
public void scheduledMethod () {
    try{
        MDC.put("scheduled", "true");

        // Your code here
    }finally{
        MDC.remove("scheduled");
    }
}

我应该提到删除密钥很重要,因为Spring可能会重用线程,而MDC会保留该值。

第2步

您的过滤器应如下所示:

package my.domain.application.logging;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

public class MDCFilter extends Filter<ILoggingEvent> {

  @Override
  public FilterReply decide(ILoggingEvent event) {    
    String scheduled = event.getMDCPropertyMap().get("scheduled");
    if ("true".equals(scheduled)) {
      return FilterReply.DENY;
    } else {
      return FilterReply.NEUTRAL;
    }
  }
}

第三步

将以下内容添加到您的 logback.xml

<appender name="myAppender" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="my.domain.application.logging.MDCFilter" />
    <!-- the rest of your appender -->
</appender>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Logback日志记录模式中的进程ID

来自分类Dev

在日志格式化程序中提取日志记录调用中的其他字段

来自分类Dev

无法在日志中设置日志级别,以便不记录其他级别

来自分类Dev

从部分中删除其他课程

来自分类Dev

我需要根据其他记录中的其他值来计算数据库中记录的值

来自分类Dev

关闭计划表中的日志记录

来自分类Dev

返校或其他课程

来自分类Dev

返校或其他课程

来自分类Dev

awk日期以记录日志文件中的纪元并打印其他列

来自分类Dev

禁用PySpark中的日志记录?我也已经看过其他文章

来自分类Dev

在Logback自动扫描中配置日志记录操作

来自分类Dev

如何将特定的数据库记录发送到其他文件

来自分类Dev

Logback日志记录-同步或异步

来自分类Dev

Logback日志记录-同步或异步

来自分类Dev

获取特定日期的其他记录

来自分类Dev

Slf4j或Logback:关闭1个单元测试(或1个线程)的日志记录

来自分类Dev

日志记录的优雅方式。LoggerAdapter可用于其他模块

来自分类Dev

访问其他文件夹中的课程

来自分类Dev

从其他兄弟姐妹中删除课程

来自分类Dev

如何在其他文件中创建我的课程?

来自分类Dev

从一个列表中删除课程,而不从其他列表中删除课程

来自分类Dev

难以确保在关闭特定表格后删除数据库中的旧记录

来自分类Dev

单击angular js中的特定菜单时如何关闭所有其他菜单?

来自分类Dev

extbase存储库:在其他lang中时访问defaultLang的引用数据记录

来自分类Dev

extbase存储库:在其他lang中时访问defaultLang的引用数据记录

来自分类Dev

如何关闭tmux中的其他窗口?

来自分类Dev

python彩色日志(和其他库)配置问题

来自分类Dev

使用其他库的库中的ClassNotFoundException

来自分类Dev

获取具有特定用户标识的其他表中不存在的记录

Related 相关文章

  1. 1

    Logback日志记录模式中的进程ID

  2. 2

    在日志格式化程序中提取日志记录调用中的其他字段

  3. 3

    无法在日志中设置日志级别,以便不记录其他级别

  4. 4

    从部分中删除其他课程

  5. 5

    我需要根据其他记录中的其他值来计算数据库中记录的值

  6. 6

    关闭计划表中的日志记录

  7. 7

    返校或其他课程

  8. 8

    返校或其他课程

  9. 9

    awk日期以记录日志文件中的纪元并打印其他列

  10. 10

    禁用PySpark中的日志记录?我也已经看过其他文章

  11. 11

    在Logback自动扫描中配置日志记录操作

  12. 12

    如何将特定的数据库记录发送到其他文件

  13. 13

    Logback日志记录-同步或异步

  14. 14

    Logback日志记录-同步或异步

  15. 15

    获取特定日期的其他记录

  16. 16

    Slf4j或Logback:关闭1个单元测试(或1个线程)的日志记录

  17. 17

    日志记录的优雅方式。LoggerAdapter可用于其他模块

  18. 18

    访问其他文件夹中的课程

  19. 19

    从其他兄弟姐妹中删除课程

  20. 20

    如何在其他文件中创建我的课程?

  21. 21

    从一个列表中删除课程,而不从其他列表中删除课程

  22. 22

    难以确保在关闭特定表格后删除数据库中的旧记录

  23. 23

    单击angular js中的特定菜单时如何关闭所有其他菜单?

  24. 24

    extbase存储库:在其他lang中时访问defaultLang的引用数据记录

  25. 25

    extbase存储库:在其他lang中时访问defaultLang的引用数据记录

  26. 26

    如何关闭tmux中的其他窗口?

  27. 27

    python彩色日志(和其他库)配置问题

  28. 28

    使用其他库的库中的ClassNotFoundException

  29. 29

    获取具有特定用户标识的其他表中不存在的记录

热门标签

归档