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

日志回溯配置:是否始终包含记录器?

呼延弘方
2023-03-14

我在我的应用程序中使用SLF4J和LogBack。我使用了几个也使用SLF4J的第三方库。为了隐藏他们的日志,我将根日志级别设置为“WARN”。但是,对于我自己的记录器,我想在日志输出中显示所有内容(无论消息级别如何)。这是我目前的配置:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>[%level] %date{YYYY-MM-dd HH:mm:ss} [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <!-- For all loggers, use WARN as minimum level to avoid log overflow -->
  <root level="WARN">
     <appender-ref ref="STDOUT"  />
  </root>

  <!-- For the specific "com.example.MyLogger.java", use log level DEBUG -->
  <logger name="MyLogger" level="DEBUG">
     <appender-ref ref="STDOUT" />
  </logger>

  <consolePlugin />
</configuration>

不幸的是,上面显示的配置无法按预期为我工作。我只收到来自“MyLogger”类的消息,如果它们的日志级别为WARN或更高。

总结一下我想要的:

  • 通常,只应记录级别为 WARN 或更高级别的消息...
  • ...除了一个特定的记录器类,无论级别如何,所有内容都应记录

这可能吗?我该怎么做?

谢谢,

艾伦

编辑:经过更多的尝试,我自己找到了一个解决方案。以下是logback.xml:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>[%level] %date{YYYY-MM-dd HH:mm:ss} [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>


  <logger name="com.example" level="ALL">
    <appender-ref ref="STDOUT" />
  </logger>

  <root level="WARN">
    <appender-ref ref="STDOUT"  />
  </root>

  <consolePlugin />
</configuration>

注意,第一个记录器没有对具体的记录器类进行限制,而是对限定类名的前缀进行限制。所以一切都来自com.example。*将被记录。由于我的应用程序中有一个特定的记录器类,因此结果与预期相同。

共有1个答案

岳英耀
2023-03-14

你应该提到你想要改变日志级别的包,而不仅仅是类

<logger name="com.example.MyLogger" level="DEBUG" />

请参阅日志文档

 类似资料:
  • 每当我部署一个外部化配置有错误的生产应用程序时,我都会在Tomcat日志中收到以下消息: 显然,外部化的配置是在log4j被正确初始化之前处理的,因此没有附加程序可以接受来自的消息。 有没有办法预先初始化log4j,以便在标准Grails log4j初始化发生之前捕获这些消息?

  • 问题内容: 如何配置OpenEJB日志记录格式?这就是我现在在日志中看到的内容: 我想禁用消息,并更改其他消息的格式。中的更改无效。 问题答案: 这是我为使事情正常运行所做的工作: 现在工作正常。这是我的: 这是: 现在,由于大卫的支持,我可以在测试期间微调OpenEJB的日志记录:)

  • 我想按照这里的描述设置用于日志记录的Jetty-http://www.eclipse.org/jetty/documentation/current/configuring-jetty-request-logs.html 但上线过程以错误结束: 我的码头网。WEB-INF中的xml具有以下配置: 我做错了什么? 我用下一个命令编译并运行WAR文件:

  • 我最近接到的任务是开始构建一个新的Spring 3 MVC项目(在这方面我是新手)。在开普勒设置了大部分POC项目后,我有: 一个原型Web应用程序(HelloWorld样式),可以部署并在(外部)Tomcat7中工作。 已配置日志并报告给控制台: 但是当我进入我的代码使用类方法时(我尝试了和两种风格),Eclipse无法识别Logger实例中的方法: 键入 后 Eclipse 代码助手显示以下选

  • Webpack开发服务器代理配置留档: https://webpack.js.org/configuration/dev-server/#devserver-代理 表示它使用http代理中间件: https://github.com/chimurai/http-proxy-middleware#http-代理事件 使用上述链接中记录的功能,我可以执行以下操作: 我的问题是,尽管其他一切都很好——我

  • 我刚刚在我的应用程序中实现了日志记录,我想知道是否有一种方法来检查日志记录程序是否为空。 我想到的是在我的脚本中设置两个处理程序: 一个用于带有级别的控制台 一个用于级别为的文件 在脚本的末尾,我需要检查logger是否不为空。这意味着在运行期间,记录了一些的消息,在这种情况下,我希望通过将调试级别的日志文件发送到我的邮箱。 这种检查在脚本本身中是否可能,而不需要shell重定向到文件?