在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!");
}
}
无论Level如何,输出都是相同的,实现是否有任何区别:
Debug Message!
Info Message!
Warn Message!
Error Message!
Fatal Message!
如果这些级别产生相同类型的消息,那么为什么实现没有只有一个参数作为级别的方法。 类似的东西:
log("Level","msg");
答案 0 :(得分:1)
从底部开始,如果您已经拥有所有可能级别的所有不同方法,则拥有log(level, msg)
方法没有任何实际好处。只有当您需要在不同级别记录相同的消息时,这才是一种不好的做法,因为该消息应该明确属于一个特定的类别。您可以通过全局或在包/类中指定级别来选择您获取的日志记录数。
每个级别上的消息都完全相同,唯一的区别是,根据您的配置,该消息是否会记录到日志输出,以及您为每个级别提供的目的。
答案 1 :(得分:1)
命名它们级别的关键目的是使您能够在各个级别进行调试。比如说, INFO级别可用于在执行期间记录有关应用程序进度的高级信息。 记录的DEBUG级别甚至比仅高级别信息更深。在DEBUG级别,您可以记录更多信息,其中包括模块级别或组件级别的信息。 TRACE级别更加细化。您可以记录消息,例如进入和退出方法以及每种方法返回的信息。 错误级别纯粹意味着仅记录错误和异常
您需要注意可以将哪种消息记录到各自的级别。
要回答您的问题,可以在log4j.properties或log4j.xml中控制这些级别。您可以指定应用程序可以调试的级别。如果应用程序一切顺利,我会把它留在INFO级别。如果出现问题并且我想在调试方面深入挖掘,我会尝试在DEBUG级别或TRACE级别打开。
另外,要了解在DEBUG级别运行调试时,甚至会打印INFO级别日志。如果在TRACE级别打开调试,则将打印DEBUG和INFO级别日志。如果在INFO级别打开调试,则仅打印INFO级别日志。
我希望你得到一些澄清。
答案 2 :(得分:-2)
因为它更容易作为用户使用。作为实现,它可能具有非常代码。