文档章节

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

GreatQing
 GreatQing
发布于 2016/07/12 22:56
字数 826
阅读 231
收藏 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 1.7.13 发布,Java 日志组件

SLF4J 1.7.13 发布,此版本主要改进内容如下: Fixed initialisation problem in presence of SecurityManager denying "createSecurityManager" runtime permission. See SLF4J-324 for fu......

oschina
2015/11/11
1K
2
奇葩错误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
Apache MINA --- [简易入门]

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

moonsnake777
2016/05/04
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
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 以后我偷小鱼干养你

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @庞巴哥 :只有这节奏瞬间变得轻松。。。。。。。。。分享Talking Eyes的单曲《In the sun (Extended Version)》: 《In the sun (Extended Ve...

小小编辑
15分钟前
0
0
多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
7
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
7
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
8
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部