【问题标题】:How to change slf4j logging level如何更改 slf4j 日志记录级别
【发布时间】:2017-09-01 10:01:38
【问题描述】:

我在 glassfish 3.1.2 服务器上运行的 Java EJB 项目中使用 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 项目中的哪个位置。 有没有办法像这样配置它?

LOGGER.setLevel("info");

【问题讨论】:

  • 我认为没有办法像在您的代码示例中那样调用设置器,因为设置记录器的级别是实现级别的问题,而不是 SLF4J 接口指定的问题。您可能会找到一种使用特定于日志记录实现的代码的方法,但是您的代码取决于日志记录实现,这正是 SLF4J 旨在帮助您避免的。
  • 对于在带有 Lombok 的 spring-boot 项目中使用的 slf4j,这对我很有帮助:stackoverflow.com/questions/43901810/…

标签: java logging ejb slf4j


【解决方案1】:

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

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

我还必须将 slf4j-api-1.7.25.jar 和 slf4j-simple-1.7.25.jar 添加到构建路径并将 jar 添加到 glassfish 库中。

完整的代码如下所示:

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");
}

【讨论】:

  • 我需要这个用于 JGit - 这是一个救生员!
【解决方案2】:

.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 服务器。不确定这是否对您有帮助,但可能会给您一些线索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-21
    • 2014-09-01
    • 2023-04-11
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多