关于日志log

  刚开始学习java时,我们习惯使用System.out.println()来打印日志,这样简单有效。但是在真正写业务代码时发现,没有standout,只有文件,需要把日志写入日志文件。在使用日志框架时,我们大部分使用了info和error级别。在使用比人提供的库时,有大量无效日志输出,干扰了我们的正常业务。于是我们需要能够将一些类和包的日志关闭,或者降低其级别。这里就体现了一个日志框架的优秀与否,能否很方便的关掉日志?

  有许多日志框架,比如sl4j,log4j,common-log等,但是他们的作用是不同的。日志框架的使用,体现了设计模式中的门面模式。sl4j只提供了接口定义,而log4j是实现。那么这两个包是如何协同工作的呢?这就是sl4j-log4j的作用。log4j设计时没有考虑到sl4j,同理sl4j的设计也没有考虑到log4j,于是就需要这个jar包将两个包沟通起来,就像mybatis提供的mybaits-spring依赖包一样。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
// 这个提示就是说明没有配置log的具体实现。

  那么slf4j是怎么找到具体实现框架的呢?答案就是org.slf4j.impl.StaticLoggerBinder,具体实现类都实现了这个类,就相当于slf4j和其他实现库的约定,slf4j会查找这个类。

log4j:WARN No appenders could be found for logger (org.slf4j.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
这个报错是说log4j没有找到相应的配置文件

  然后可以参考log4j官网的配置,进行相关的配置

参考博文:https://www.cnblogs.com/chenhongliang/p/5312517.html

log4j和sl4j的作用:https://www.cnblogs.com/xrq730/p/8619156.html

log4j的配置:https://sixdegree.github.io/2013/05/02/Java-Log4j.html

这篇很详细了

原文地址:https://www.cnblogs.com/Robin008/p/12968961.html