SLF4J在信息级别记录错误消息

时间:2012-01-23 17:11:54

标签: java glassfish log4j slf4j

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

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

我会得到这样的输出:

  

严重:这是一条消息

我用SLF4J记录器替换它以与应用程序的其余部分保持一致:

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

但现在它正在以INFO级别登录:

  

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

我原本希望将其记录在ERROR级别(SLF4J似乎没有任何级别)。

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

我正在使用Glassfish,以防可能相关。

2 个答案:

答案 0 :(得分:4)

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

所以挂上JUL适配器,你应该都很好。

答案 1 :(得分:1)

没有配置列表记录它只是一个猜测。但我认为日志框架可能配置错误。 slf4j记录在ERROR级别:

ERROR com.mycompany.MyClass - This is a message

然后将此输出发送到控制台,该控制台由glassfish重定向到INFO级别的常规日志文件。

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