【问题标题】:SLF4J logs error messages at info levelSLF4J 在信息级别记录错误消息
【发布时间】:2012-01-23 17:11:53
【问题描述】:

我遇到了一个奇怪的问题。我有一个曾经使用 Log4j 的类,我可以这样做:

LOGGER.log(Level.SEVERE, "This is a message");

我会得到这样的输出:

严重:这是一条消息

为了与应用程序的其余部分保持一致,我将其替换为 SLF4J 记录器:

LOGGER.error("This is a message.");

但现在它在 INFO 级别记录:

信息:2012-01-23 16:50:43,306 [http-thread-pool-8080(3)] 错误 com.mycompany.MyClass - 这是一条消息

我希望这会以 ERROR 级别记录(SLF4J 似乎没有任何高于此的级别)。

知道发生了什么吗?这是默认的吗?该应用程序相当复杂,所以如果它在某个地方被更改,我不会感到惊讶,但是我在哪里可以找到它来更改它?

我正在使用 Glassfish,以防万一。

【问题讨论】:

    标签: java glassfish log4j slf4j


    【解决方案1】:

    您需要让您的 SLF4J 使用 Java Util Logging 后端。这就是 Glassfish 在内部使用的。由于它没有使用它,它正在转储到控制台,并且 GF 将控制台上的所有内容报告为 INFO。

    所以连接 JUL 适配器,你应该一切都好。

    【讨论】:

      【解决方案2】:

      没有用于记录的配置列表,这只是一个猜测。但我认为日志框架可能配置错误。错误级别的 slf4j 日志:

      ERROR com.mycompany.MyClass - This is a message
      

      然后这个输出被发送到控制台,由 glassfish 重定向到 INFO 级别的通用日志文件中。

      以前的设置可能使用 glassfish 日志记录直接继承其配置。切换到 slf4j 后没有找到配置,所以所有内容都发送到控制台,然后发送到 server.log

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        • 1970-01-01
        • 2019-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多