文档章节

slf4j 和 log4基础入门(Maven配置)

GreatQing
 GreatQing
发布于 2016/07/12 22:56
字数 826
阅读 202
收藏 6

    我们将从四个问题出发。

    第一,log4j是什么?

    log4j是一个日志系统,是Apache的一个开放源代码项目。当然Java日志系统比较丰富,其他常用的日志系统还有java.util.logging、JUL、logback等等。

    第二,slf4j又是什么?

    slf4j(Simple logging facade for Java),即简单日志门面。它不同于上面所说的各种日志系统,不是真正的日志实现,不是具体的日志解决方案。而是一个抽象层,它允许你在后台使用任意一个日志系统(例如log4j)。即slf4j是一个具体日志系统的封装,对外提供统一的API,但其本身并不提供日志实现。

    第三,既然已经有各种日志系统了,为什么还要使用slf4j?

    问题就是现在有了各种日志系统,因此每个类库使用的日志系统都可能不一样。但lf4j允许你在后台使用任意一个日志系统(例如log4j),即使得你的程序独立于任意特定的日志系统。例如,你的一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active MQ使用了slf4j,你就可以继续使用你的日志系统而无需加载和维护一个新的日志框架。

    第四,果真如此好用,那怎么使用?

    首先,准备相应的包。

    1.slf4j-api-x.x.x.jar 它提供对外一致的API接口,其本身不提供日志实现。
    2.这里选择log4j作为我们的日志实现,则需要下载 log4j-x.x.x.jar。
    3.如果想把slf4j绑定log4j,则需要下载slf4j对log4j的相应”驱动” slf4j-log4j12-x.x.x.jar。


    这样就可以使用slf4j提供的API,用log4j实现打印日志了。具体在Maven porn.xml 文件中添加的dependency如下:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.6</version>
</dependency>

    然后,添加配置文件。log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties格式的文件。我们这里采用properties格式的方法。

在项目中添加log4j.properties文件,如下图:

具体配置如下:

# config root logger
# [level] 是日志输出级别
log4j.rootLogger = INFO,system.out
# Appender 为日志输出目的地
log4j.appender.system.out=org.apache.log4j.ConsoleAppender
log4j.appender.system.out.layout=org.apache.log4j.PatternLayout
log4j.appender.system.out.layout.ConversionPattern=Server Logger --> %5p{%F:%L} = %m%n

# config this Project.file logger
log4j.logger.thisProject.file=INFO,thisProject.file.out
# 每天产生一个日志文件
log4j.appender.thisProject.file.out=org.apache.log4j.DailyRollingFileAppender
log4j.appender.thisProject.file.out.File=logContentFile.log
log4j.appender.thisProject.file.out.layout=org.apache.log4j.PatternLayout

    最后,在代码中使用日志系统。示例代码如下:

import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App {

    // 通过指定的名字获得日志对象
    public static final Logger log = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {

        // 通过资源类对log4j.properties文件进行加载
        PropertyConfigurator.configure("D:\\Workspace\\man\\src\\log4j.properties");
        log.info("Hello,World!");
    }
}

使用效果:

至此成功打印输出了日志。

    通过此篇文章,我们简单了解slf4j和log4j的背景。在此基础通过一个简单的例子,实现了slf4j和log4j的配置使用。其中省略了很多细节,待下次深入研究后再另起一篇博文详细介绍吧。

© 著作权归作者所有

共有 人打赏支持
GreatQing
粉丝 6
博文 17
码字总数 11370
作品 0
广州
程序员
私信 提问
奇葩错误SLF4J: Failed to load class org.slf4j。。的修复

用Kepler eclipse自带的maven插件搞了一个maven项目,build的过程中出现如下红色信息: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-opera......

WangPerry
2013/12/25
0
1
让 Spring Framework 依赖 SLF4J 的 Maven 配置

Spring Framework 一直以来都是依赖 commons-logging,通过在 Maven pom.xml 进行配置,可以让 Spring Framework 依赖于越来越流行的 SLF4J,这是利用了 slf4j.org 提供的 jcl-over-slf4j 把...

张前程
2013/12/30
0
0
Java混乱的日志体系(logback)(转)

作为一名 Java 程序员,日常开发工作中肯定会接触日志系统,但是众多的框架,包括 Log4j、Log4j2、Logback、Slf4j、Apache Common logging 等等,引用的 maven 依赖众多,到底可以去掉哪些,...

easonjim
2017/12/27
0
0
【SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".】解决办法

【问题描述】 Maven工程中,使用了slf4j,运行时出现错误: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implement......

dwf07223
06/26
0
0
Apache MINA --- [简易入门]

Apache MINA是一个网络应用程序框架,它用来帮助我们轻松的建立高性能的,高可扩展的网络应用程序.它为各种传输(比如TCP/IP,UDP/IP)提供了抽 象的,事件驱动的,异步的API.它也常常被被称作"NIO框...

moonsnake777
2016/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
1
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
2
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
4
0
小白带你认识netty(二)之netty服务端启动(下)

承接上一篇小白带你认识netty(二)之netty服务端启动(上),还剩下两步骤:3、注册Selector:将Channel注册到Selector上 和 4、端口的绑定:服务端端口的监听。 3、注册Selector:将Chann...

天空小小
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部