理清common-logging、log4j和slf4j的区别

Java开发中常见日志管理的两种搭配是common-logging+log4j或log4j+slf4j,其中common-logging和slf4j 都属于日志接口,log4j是具体的实现类。

1、单独使用common-logging

可以在项目中单独使用common-logging,就apache的common-logging的这一个jar包也可以实现日志功能。而且一般common-logging如果没有找到自己对应的配置文件的话,就会一层层往下找,其中有一层是查到log4j,如果找到log4j就使用log4j的配置,如果没有log4j的话,则最后会System.err输出日志内容。结合具体的代码图片来说明可能会更清晰,如下图(只引进了一个common-logging的jar包,即使有一个配置文件log4j.properties,但是因为没有引进log4j的jar包,这样common-logging动态查找log4j配置文件的时候,就找不到,最后只能System.err输出)

2、使用common-logging+log4j

采用两者结合有两种实现方式,分别是Logger.getLogger()和LogFactory.getLog()
  1.LogFactory.getLog()则来自apache的common-logging包(如下图,因为引进了log4j,所以ccommon-logging的动态查找会找到文件配置,会按这个配置输入日志内容到指定的文件位置)

  2.Logger.getLogger()是使用log4j的方式记录日志(如下图)

这里需要注意一个问题,就是log4j的默认配置文件名是log4j.properties,如果把配置文件名改回的话,除非在使用的时候引入文件配置,不然是无法使用的,会System.err输出Please initialize the log4j system properly,比如我将log4j.properties改为log4j2.properties后再跑一次(如下图),

如果想引入指定的配置文件,可以直接在使用log4j自带的 PropertyConfigurator.configure("配置文件路径")如下图引入加载了log4j2.properties,则一样按照该文件内的配置输出了日志内容到指定文件。

3、log4j+slf4j组合

这两者的组合是需要三个jar包的,分别是slf4j-api和slf4j-log4j、log4j。

实现方式也有两种的,LoggerFactory.getLogger()和Logger.getLogger(),推荐使用方式LoggerFactory.getLogger()前者。

LoggerFactory.getLogger()是slf4j的,他相对于log4j的Logger.getLogger(),优势在于有占位符{}替换,避免字符拼接消耗性能。

 

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值