我遇到了一个奇怪的问题。我有一个曾经使用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,以防可能相关。
答案 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