slf4j的使用

常见的日志框架:

如果是单一的应用,直接使用日志框架就足够了。

  • log4j
  • logback
  • j.u.l (java.util.logging)
常见的日志门面:

如果编写的应用是作为libraries或者其他embedded component提供给其他人使用,则需要使用slf4j作为日志门面。因为你无法预测使用你libraries或component的用户使用过的是什么日志框架。

  • slf4j
  • common-logging
日志框架通常都会结合日志门面使用。下面主要介绍slf4j的使用方法。slf4j有两种使用方法:一种是混合绑定(concrete-binding),另一种是桥接遗产(bridge-legacy).

混合绑定是指在项目中直接使用slf4j来打印日志,而底层绑定任意一种日志框架,如log4j/logback/jul等。混合绑定根据实现原理又分为两种:有适配器(adapter)绑定,无适配器绑定。有适配器绑定是指底层没有实现slf4j的接口,而是通过适配器调用底层日志框架的logger。无适配器绑定是指其本身实现了slf4j得全部接口(logback),不需要调用其它日志框架的logger。

几种混合绑定包简介:

  • slf4j-log4j12-1.7.21.jar:有适配器,绑定log4j,logger由log4j-1.2.17.jar提供。
  • slf4j-jdk4-1.7.21.jar:有适配器,绑定jul,logger由jul提供

  • logback-classic-1.0.13.jar:无适配器,logback实现了slf4j得全部接口。
  • slf4j-simlple-1.7.21.jar:无适配器,slf4j的简单实现,仅打印info及以上级别的日志,所有输出重定向到System.err,适用于小应用。

1、slf4j + log4j
log4j的配置文件是用来设置logger的级别、存放位置和布局的,可以通过java属性文件(key = value)格式设置。配置文件支持 XML、JSON、YAML和properties 格式。
配置文件寻找优先级 :
log4j2-test > log4j2-dev,
log4j2.properties  >  log4j2.yaml/log4j2.yml  >  log4j2.json/jlog4j2.jsn  >  log4j2.xml
log4j配置文件元素:
Logger
logger是日志记录器,使用方式为 Logger logger = LoggerFactory.getLogger( App.class )
Appender
每个Appender可独立配置纪录日志的设备,可以是:控制台、文件、数据库、消息系统等。log4j提供的Appender具体有如下几种:

Appender类型Appender描述
org.apache.log4j.ConsoleAppender输出到控制台
org.apache.log4j.FileAppender输出到文件
org.apache.log4j.DailyRollingFileAppender产生日志文件的周期
org.apache.log4j.RollingFileAppender日志文件达到指定大小产生一个新日志文件
org.apache.log4j.WriterAppender将日志信息以流格式发送到指定地方
Layout 日志布局
Layout即日志的格式formatter,对日志时间中的数据进行转换和格式化,Layout决定了数据在一条日志记录中的最终表现形式。log4j提供的以下几种Layout

Layout类型Layout描述
org.apache.log4j.HTMLLayout以html格式布局
org.apache.log4j.PatternLayout可以灵活的指定布局格式
org.apache.log4j.SimpleLayout包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout包含日志产生的时间、线程、类别等等信息

log4j采用类似C语言中printf的打印格式化日志信息,打印参数如下

类型 描述
%m 输出代码中制定的消息
%p 输出日志级别
%r 输出自应用启动到出处该日志记录耗费的毫秒数
%c 输出触发该日志事件的类
%t 输出触发该日志事件的线程
%d 输出日志事件发生的时间,如:%-d{yyyy-MM-dd HH:mm:ss}
%l 输出日志发生的位置,包括类信息、线程、行数
Leval
每个打印日志都可以单独指定日志级别,通过配置文件来控制输出级别。log4j提供的日志级别如下:

类型 描述
ALL 最低级别,用于打开所有日志记录
TRACE 指定粒度比DEBUG更细的事件
DEBUG 指定细粒度信息事件,对调试应用程序有帮助
INFO 指定粗粒度信息事件,突出强调程序运行过程
WARN 指定具有潜在危害的情况
ERROR 指定错误事件,程序仍然允许运行
FATAL 指定非常严重的错误事件,可能导致应用程序终止
OFF 最高等级,用于关闭日志记录
SLF4J+log4j实践
1.  添加依赖 slf4j-api-1.7.25.jar和log4j-2.10.jar

log4j必须指定配置文件或默认配置,如果没有编写配置文件,且没有设置默认配置器是,会报错。
偷懒方法: 通过BasicConfigurator.configure() 可指定log4j默认配置器,该配置默认生成rootLogger,并添加一个控制台Appender。可通过DOMConfigurator.configure( logger-properties-file-path )显示制定外部配置文件
log4j配置文件模板:
### set log levels ###
log4j.rootLogger = debug,stdout,D,E

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %-d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n

### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n


### logger ### 
# 设置后,路径下的日志将只输出ERROR日志
#log4j.logger.com.xxx=ERROR


STEP1 :将 slf4j-api-version.jar和 log4j-2.10.jar 添加到 class-path 中。

STEP3:在程序中使用slf4j

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值