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

slf4j记录器日志级别未正确继承

白光耀
2023-03-14

我在一个类中创建了3个不同的slf4j记录器:

package x.y.z;

public class MyClass {
    private static final Logger logger1 = LoggerFactory.getLogger(MyClass.class);
    private static final Logger logger2 = LoggerFactory.getLogger(MyClass.class + "-a);
    private static final Logger logger3 = LoggerFactory.getLogger(MyClass.class + "-b);

    public void myMethod() {
         // some code that logs to all loggers at debug level
    }
}

奇怪的是,即使在调试级别配置了X.Y.Z.MyClass,MyClass-a和MyClass-b记录器也不是在调试级别记录日志,而是在配置的根级别记录日志(在我的例子中是info)。如下所示,即使为-a和-b指定特定的记录器也不起作用。在我将根更改为debug之前,它们不会在debug级别进行日志记录。真的被这个难住了,有什么想法吗?

<configuration scan="true" scanPeriod="30 seconds">

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
   ....
  </appender>

  <logger name="x.y.z.MyClass" level="DEBUG" />
  <logger name="x.y.z.MyClass-a" level="DEBUG" />
  <logger name="x.y.z.MyClass-b" level="DEBUG" />

  <root>
    <level value="info" />
    <appender-ref ref="FILE" />
  </root>
</configuration>

共有1个答案

孔安阳
2023-03-14

因为您在日志配置中提到了错误的类名。

必须是

最好将类规范更改为公共类MyClass{}

 类似资料:
  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 看过本章第一节的同学应该还记得,log_by_lua* 是一个请求经历的最后阶段。由于记日志跟应答内容无关,Nginx 通常在结束请求之后才更新访问日志。由此可见,如果我们有日志输出的情况,最好统一到 log_by_lua* 阶段。如果我们把记日志的操作放在 content_by_lua* 阶段,那么将线性的增加请求处理时间。 在公司某个定制化项目中,Nginx 上的日志内容都要输送到 syslo

  • 我使用Kubernetes作为cron作业运行python脚本。问题是,直到作业完成后,我才看到脚本的输出(可能需要一段时间才能运行)。我怀疑这是由于日志记录级别(--v选项)造成的,但在我的整个生命周期中,我都找不到它的文档(默认为--v=0)。如果我想增加输出内容的详细程度,是否有人知道“INFO”或“TRACE”的值(或者这些值是什么/定义在哪里)?提前谢谢你的帮助。 编辑:是否有人在Kub

  • 现在,问题是,当我以以下方式进行日志记录时: 尽管根记录器级别被设置为“错误”,但日志条目仍然存在于两个日志文件中。然而,当我去掉“it.pkg.testpkg.service”记录器(通过注释或删除它)时,条目停止进入根记录器。我不太清楚这是怎么回事。 目前,我已经找到了一个临时解决方案,方法是在“root_file_appender”中添加以下条目: 谢了。

  • 我目前正在尝试降低我在java项目中使用的PDFBox 1.8.6库的日志记录级别,但失败了。基于前面的问题,我在 /src/目录中有以下log4j.properties文件。 我不确定我还遗漏了什么,因为我仍然在控制台中收到类似以下消息的垃圾邮件。 如果有一种方法可以通过编程方式更改日志级别,那么我根本不会附加到属性文件,因为我在其他任何地方都不使用log4j。我不知道它是否使用log4j。属性