繁体   English   中英

SLF4J日志记录,不同级别

[英]SLF4J logging, different Levels

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

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)方法并没有真正的好处。 仅当您需要以不同级别记录同一条消息时,但这是一个不好的做法,因为该消息显然应该属于一个特定类别。 而且,您始终可以通过全局或在包/类中指定级别来选择获取多少日志。 该消息在每个级别上都是完全相同的,唯一的区别是,该消息是否要根据您的配置生成到日志输出中,以及您对每个级别给出什么目的。

给它们命名级别的主要目的是使您能够在各个级别上进行调试。 例如,INFO级别可用于在执行期间记录有关应用程序进度的高级信息。 记录的调试级别不仅限于高级信息,更深层的。 在DEBUG级别,您可以记录更多信息,其中包括有关模块级别或组件级别发生的情况的信息。 TRACE级别更加精细。 您可以记录诸如进入和退出方法之类的消息,以及每种方法所返回的信息。 错误级别仅用于记录错误和异常

您需要注意可以将哪种消息登录到各自的级别。

为了回答您的问题,可以在log4j.properties或log4j.xml中控制这些级别。 您可以指定应用程序可以调试的级别。 如果在应用程序中一切顺利,我将其保留在INFO级别。 如果出现问题,并且我想在调试方面进行更深入的研究,我将尝试在DEBUG级别或TRACE级别打开。

另外,请理解,当您在DEBUG级别运行调试时,甚至会打印INFO级别的日志。 如果在TRACE级别打开调试,则甚至会打印DEBUG和INFO级别的日志。 如果在INFO级别打开调试,则仅会打印INFO级别的日志。

希望您能澄清一下。

因为它更易于您使用。 作为实现,它可能具有该代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM