SLF4J日志记录,不同级别

问题描述:

在SLF4J(日志记录)中,特征级别有何不同。即ERROR消息与DEBUG消息不同。SLF4J日志记录,不同级别

import org.apache.log4j.Logger; 

public class LogClass { 

    private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class); 
    public static void main(String[] args) { 

     log.trace("Trace Message!") 
     log.debug("Debug Message!"); 
     log.info("Info Message!"); 
     log.warn("Warn Message!"); 
     log.error("Error Message!"); 
     log.fatal("Fatal Message!"); 
    } 
} 

输出是一样的,不管水平如何,有没有实施任何区别:

Debug Message! 
Info Message! 
Warn Message! 
Error Message! 
Fatal Message! 

如果这些水平产生相同类型的消息,那么为什么执行不只有一个方法用参数作为级别。 类似于:

log("Level","msg"); 

从底部开始,就没有真正的好处有log(level, msg)方法,如果你已经把所有的所有可能等级的不同方法。只有当你需要在不同级别登录相同的信息时,这是一个不好的做法,因为这个信息应该清楚地归入一个特定的类别。而且,您可以通过全局或在包/类中指定级别来始终选择要输出多少记录。 消息在每个级别上都完全相同,唯一的区别是如果该消息将根据您的配置对日志输出做出决定,以及您为每个级别提供了什么目的。

+0

如何动态确定关卡或基于用户输入的情况如何。目前,您需要分支(if-else或switch-case),而使用日志(Level,String)时,您可以调用一次日志。 – Dormouse

因为它更容易作为用户使用。作为实现,它可能会有那个代码。

的主要目的,他们的名字是水平,使您在各种级别进行调试。举例来说, INFO级别可用于记录执行期间应用程序进度的高级信息。 记录的DEBUG级别意味着要比高级信息更深入。在DEBUG级别,您可以记录更多信息,其中可以包含在模块级别或组件级别发生的情况的信息。 TRACE级别更加细化。您可以记录消息,如进入和退出方法以及每种方法返回的信息。 错误级别纯粹意味着仅记录错误和异常

您需要注意哪些消息可以记录到其各自的级别。

要回答你的问题,这些水平可以在log4j.properties或log4j.xml文件进行控制。您可以指定应用程序可以调试的级别。如果在应用程序中一切顺利,我会将其保留在INFO级别。如果出现问题,我想在调试方面深入挖掘,我会尝试在DEBUG级别或TRACE级别打开。

而且,明白,当你在运行DEBUG级别的调试,甚至INFO级别的日志将被打印出来。如果在TRACE级别打开调试,即使打印DEBUG和INFO级别的日志。如果在INFO级别打开调试,则只会打印INFO级别日志。

我希望你有一些澄清。