如何更改slf4j日志记录级别

时间:2017-09-01 10:01:38

标签: java logging ejb slf4j

我在glassfish 3.1.2服务器上运行的Java EJB-Project中使用org.slf4j.Logger。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class main {

private static final Logger LOGGER = LoggerFactory.getLogger(main.class);

public static void main(String[] args) {
  LOGGER.info("--- show this everytime");
  if(LOGGER.isDebugEnabled()) {
        LOGGER.debug("--- show this only if debug is enable");
  }
  LOGGER.info("--- show this everytime");
}

所以我的问题是,我不知道如何打开/关闭不同的日志级别(信息,调试,错误,跟踪,警告)。我读到了创建配置文件或xml文件,但我不知道将这些文件放在EJB-Project中的哪个位置。 有没有办法像这样配置它?

LOGGER.setLevel("info");

2 个答案:

答案 0 :(得分:1)

.properties文件

您说:

  

我阅读了有关创建配置文件或xml文件的信息,但是我不知道将这些文件放在EJB项目中的位置。

您可以为记录器创建一个.properties文件。该文件必须适当地出现在类路径上。

在一个由Maven驱动的基于Servlet的项目(一个Vaadin 14项目)中,我放置了一个simplelogger.properties文件,其中包含此内容( Atmosphere 是Vaadin使用的库)用于 SimpleLogger 实现:

org.slf4j.simpleLogger.defaultLogLevel = error
org.slf4j.simpleLogger.log.org.atmosphere = warn

…在我的IntelliJ项目的resources文件夹中。

在构建时创建的target中,此文件显示在:myProjectName> WEB-INF> classes> simplelogger.properties

该项目针对的是web container,例如Eclipse Jetty或Apache Tomcat。我不使用像Glassfish这样的完整EJB服务器。不知道这是否对您有帮助,但可能会给您一个线索。

答案 1 :(得分:0)

我找到了解决方案。我可以使用以下行更改日志记录级别:

System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "Info");

我还必须将slf4j-api-1.7.25.jar和slf4j-simple-1.7.25.jar添加到Build Path并将jar添加到glassfish lib。

完整的代码如下所示:

import org.slf4j.LoggerFactory;

public class main {

public static void main(String[] args) {

   System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "Info");
   final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(LogTest.class);

   LOGGER.info("--- show this everytime");
   if(LOGGER.isDebugEnabled()) {
        LOGGER.debug("--- show this only if debug is enable");
   }

   LOGGER.info("--- show this everytime");
}