Java日志的学习之整体了解

人生第一篇博客,有错误或者不好的地方还请各位大佬不惜时间给评论一下,感谢!
最近使用日志的时候都是模仿着前面的写,而且各种日志让我感觉很混乱,理不清他们的关系,所以来学习一番并简单记录下来,只是大致了解一下,具体怎么使用到用的时候再去学吧,先学一两套比较常用的使用方法就好了。
首先感谢一下前人的博客,给我的学习带来了很大的帮助。写这篇文章前看的博客
[https://blog.csdn.net/waitgod/article/details/78750184](https://blog.csdn.net/waitgod/article/details/78750184)

话不多说,直接搞起来。

JUL

先说一下JDK自带的(JDK1.4以后才有的)日志系统吧,java.util.logging.Logger(简称JUL),这是一个JDK自带的日志系统,比较低级但是使用简单,如果没什么需要配置的东西的话直接用就行,如果想对日志系统的一些东西进行自定义的话有两种方法。
第一,直接改jre里的logging.properties文件,
第二使用java.util.logging.config.file来覆盖之前的配置文件。
使用范围的话,我没做多久开发,反正我是没见过用这个的,不过自己写点复杂点的测试代码需要日志的话这个可以用,很方便,基本不用配置(自己的测试代码只要知道在哪报了什么问题就好了,不需要改格式呀之类的,强迫症另说!哈哈哈)

JCL

Apache Commons Logging,一看名字就知道是apache的作品,它的最大作用(就是用得比较广泛的作用,别纠结字眼了)并不是做日志记录输出的,而是用来解耦合的,怎么理解呢?它其实是一个通用的日志API,也就是一个接口,当然,它也实现了自己的接口,只是比较简单,不对是很简单的实现了而已(就是org.apache.commons.logging.impl.SimpleLog),它的超能力就是绑定别的日志工具,log4j好用?那我就绑定log4j,slf4j好用?那我就绑定slf4j,谁好用我就用谁的,这就是它的宗旨,我们在开发的时候直接调用的是JCL的api,如果我们觉得当前的日志工具不好用了,想换一个很简单,只需要把好用的塞给JCL就好了,这就实现了项目和日志工具的解耦合。
上面提到了绑定,要怎么绑定呢?JCL有一套自己的绑定顺序(参考官方文档),官方文档是这样说的:
官方描述截图
大概意思就是:

  1. 先找名字是org.apache.commons.logging.Log的LogFactory配置(有多个用第一个或用优先级高的一个,1.1版本后可以定义优先级的)
  2. 找名为org.apache.commons.logging.Log的系统属性
  3. 找Log4J日志记录系统
  4. 找JDK 1.4的日志系统
  5. 都找不到的话我就还是用我自己的吧(SimpleLog)
    哇,好麻烦呀,我怎么记得住我用的是哪个?怎么记得住这个顺序?我不记了,简单暴力但是很好用的做法,创建commons-logging.properties文件,用类似以下的代码直接跟JCL说,我要用这个,你就按这个来啊,不然我就打死你,算了,还是打死自己吧,肯定是自己没搞对!
//后面的属性值可以更改
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

使用范围嘛,都可以用。

log4j2

主要有三大组件构成:

  1. Logger:日志记录器,负责收集处理日志记录
  2. Appender:日志输出目的地,负责日志的输出
  3. Layout:日志格式化,负责对输出的日志格式化
    这是日志工具的具体实现,没什么好说的。
    配置看官方文档

slf4j

Simple Logging Facade for Java,它也是一个日志的统一接口,和JCL类似,它是在程序编译时静态绑定log的实现工具的,而JCL是在程序运行时动态绑定的。
要用slf4j需要各种桥接包,如果要用log4j,就需要log4j的桥接包。比如使用log4j的时候需要下面这几个包。
slf4j-api-xxxx.jar - JAR for SLF4J API
log4j-yyyy.jar - JAR for Log4J API
slf4j-log4jxxyy-zzzz.jar - Log4J Adapter for SLF4J

logback

logback,一个“可靠、通用、快速而又灵活的Java日志框架”。Logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本,完整实现了SLF4J API。logback-access模块与Servlet容器集成提供通过Http来访问日志的功能。

日志接口日志实现
JCL、slf4jlog4j[2]、logback、Java.logging、xxx.simpleLog、slf4j-simple

大致弄清楚关系了后续可能会来补充,哇 12点了,赶紧睡觉!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值