文档章节

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

GreatQing
 GreatQing
发布于 2016/07/12 22:56
字数 826
阅读 1.6K
收藏 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
博文 18
码字总数 11447
作品 0
广州
程序员
私信 提问
加载中
请先登录后再评论。
ssm环境下配置log4j打印mybatis的sql语句

####概念:slf4j-api : Simple Logging Facade for Java slf4j-api为java提供的简单日志的Facade(Facade:门面,更底层一点说就是接口)。它允许用户以自己的喜好,在工程中通过slf4j接入不...

osc_qsdpzxzp
2019/03/07
18
0
【Log】SLF4J简单入门

SLF4J介绍   SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,...

osc_gepa6v61
2019/01/02
2
0
常见java日志系统的搭配详解:关于slf4j log4j log4j2 logback jul jcl commons-logging jdk-logging

先看一张图: 是不是有点晕, 晕就对了。这个仅仅是 slf4j 的情况,实际上, 我们不仅要接触到 slf4j ,有时候还会接触其他的日志系统。且看下文分解。 1 直接使用各个日志系统 1.1 直接使用...

osc_uz0m1ri0
2019/04/11
2
0
Kafka生产者案例报警告SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

一、SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 这个报警告的原因简单来说时因为slf4j的版本和log4j的版本不匹配。 解决办法:   1.在你的maven库中查找你的slf4j...

osc_opiar5rp
2019/02/27
3
0
webmagic 日志使用及maven项目中排除日志依赖

我用的Spring Boot maven构建的工程,默认引入了 <dependency> </dependency> <dependency> </dependency> 再引入webmagic相关的包之后,运行出现大量的debug日志。 此时没有加入任何的log配......

osc_kc130nmf
2018/05/25
8
0

没有更多内容

加载失败,请刷新页面

加载更多

JDK路径设置无效问题解决

JDK 配置环境无效的两种情况 第 ① 种:输入java -version,显示:'java' 不是内部或外部命令,也不是可运行的程序或批处理文件。这个问题一般出现在电脑第一次配置环境的时候。 第 ② 种:输...

osc_s3ka07m5
21分钟前
27
0
代理模式

一 代理模式简介 代理(Proxy)是一种设计模式 提供了对目标对象另外的访问方式 代理对象代理目标对象 达到增强目标对象功能的目的 二 静态代理 需要定义接口或者父类 代理对象与目标对象一起实...

osc_5w65ebjo
22分钟前
23
0
软件测试基础自学之测试基础理论,先看完这篇你再做测试

第一章、系统测试之测试基础 软件测试不只只只是测试源代码 软件测试人交流社群313782132,内有学习资料、面试技巧、内推机会。 1、测试定义: 通过人工或自动的手段, 对被测对象进行检阅的...

osc_aowxrpuv
25分钟前
17
0
软件测试基础之手工测试,你能想到的都在这

手工测试是传统的测试方法,由测试人员手工编写测试用例、执行、观察结果。软件测试中发现问题最多的都是手工测试,占整个项目的百分之九十五左右,所以说手工测试是软件测试基础。但手工测试...

osc_sfl7wfr9
26分钟前
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部