log4j WARN 和 SLF4J WARN 解决办法

Log4j 是什么

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

log4j:WARN出现的原因

在使用IntelliJ IDEA编写java程序的时候很容易出现下面的错误,原因在警告中也说的非常明白,没有正确的初始化log4j,而初始化log4j一般使用的是一个名叫log4j.properties的文件,因此只需要写好log4j.properties文件,然后让IntelliJ IDEA知道其位置便可。

log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
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:WARN解决的办法

  • 创建log4j.properties 文件
hadoop.root.logger=DEBUG, console
log4j.rootLogger=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
  • 修改编译配置

指明log4j.properties文件位置

-Dlog4j.configuration=file:///path/to/log4j.properties

效果如下图所示:

log4j WARN 和 SLF4J WARN 解决办法_第1张图片


上述WARN也可以直接在代码中加入

BasicConfigurator.configure();

解决。


SLF4J 是什么?

JAVA简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,以外观模式实现。可以在软件部署的时候决定要使用的 Logging 框架,目前主要支援的有Java Logging API、log4j及logback等框架。以MIT 授权方式发布。

SLF4J 的作者就是 log4j 的作者 Ceki Gülcü,他宣称 SLF4J 比 log4j 更有效率,而且比 Apache Commons Logging (JCL) 简单、稳定。

SLF4J:WARN 出现的原因

org.slf4j.impl.StaticLoggerBinder类没有被载入内存的时候,会出现这个WARN,而之所有没有被载入则是因为没有在依赖库中没有合适的SLF4J框架 ,那么只需要将其放置在IDEA可以找到的地方就可以了。这里因为使用maven管理项目,因此pom.xml添加所涉及到的库便可。

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.

SLF4J:WARN解决的办法

<dependency>
    <groupId>org.slf4jgroupId>
    <artifactId>slf4j-log4j12artifactId>
    <version>1.8.0-alpha2version>
dependency>

你可能感兴趣的:(大数据平台组件)