java日志框架

前言

日志在软件系统的各个方面都有非常重要地位,没有日志虽然不会影响系统的正确运行,但是当系统某个部分模块或者某个小小的组件出了问题之后,没有日志的生活是这样的:有问题现象从上往下逐一慢慢排查,工作量、时间量将非常大,大大增加了开发的难题。如果有日志的功能,就可以快速定位到错误的位置,快速定制解决方案;我们的操作系统像windows无时无刻都记录运行系统各部分日志功能,系统出了那些异常错误等等,透过日志分析,都能很快的在一个诺大的操作系统中找到问题的源头,直接对症下药,多有效。
在java项目中也一样,没有日志功能的项目可以说是不完整的;在我们java开发debug的时候,我们可以在调试时查看栈信息,知道当前程序代码运行的状态,可以分析修改各变量值,输出的日志于控制台console可以很清楚的看到程序在之前运行的结果;可以很清晰的看到程序运行过程中那部分代码出现了问题,可以快速定位错误等等;和在项目部署到服务器上运行一样,中间运行期间如果出现什么错误或者异常,日志都会有记录,就很方便帮助开发或运维发现问题并解决问题。甚至日志中可以含有更详细的信息数据,如用户的资料、用户的各方面行为操作等都可以在日志里面记录;记录的这些数据都可以成为大数据分析项目的重要对象。

java常用日志框架

1.目前的日志体系
java日志体系图
2.日志框架组成部分
java日志框架由3部分组成,Logger、Formatter、Appender。有些简单的只有两部分,将Logger和Appender合成的一部分;
其中个部分的作用功能:
Logger:接收日志内容,每个Logger实例都有自己的名称,在一定Level上记录日志。
Formatter:主要用于格式化接收日志的内容。
Appender:主要用于将日志内容输出到Console、socket、文件、数据库、邮件等等。
3.日志框架接口适配层
目前常用的日志框架有两个抽象接口层,作为日志标准(并不是日志系统的具体实现),提供日志接口和获取具体实现该接口的对象的方法。两个抽象接口分别为:Apache(Jakarta) Commons Logging(简称为JCL)和Simple Logging Facade For java(简称为SLF4J)。
4.具体日志系统框架
常见的具体日志系统有:logback、log4j、log4j2(log4j的加强版)、java.util.logging(JUL,JDK自带的日志功能);这些具体的日志系统框架实现了上面适配层两个日志抽象接口之后,我们在开发过程中就不需要为选择哪一种具体的日志系统而担忧了;只要你使用slf4j或者jcl日志框架接口标准,下面的具体日志系统实现你可以任意选择一个或者几个使用;slf4j或jcl会动态查找并加载你是用的是哪一种具体日志系统实现;就不会因为不同项目系统使用不同日志框架现而要去同时去维护和支持不同项目的日志框架,非常不便。
java日志系统框架

java日志框架详解

详解从日志框架接口的适配层开始,有两部分SLF4J和JCL。
1.SlF4J
即java简单日志门面(Simple Logging Facade For Java),不是具体的日志解决方案,只服务于各种的日志系统,官方的说法:SLF4J是一个用于日志系统框架的简单Facade,允许最终用户在部署其应用时使用用户自己想用的日志系统框架。目前绑定实现了SLF4J接口的日志系统有很多;请看官方的一张SLF4J的日志系统实现图:
SLF4J框架图1.1 SLF4J实现原理
slf4j是java门面设计模式的典型应用,简单说一下门面模式(外观模式),详细请参考Java设计模式之门面模式
由于门面模式的结构图过于抽象,因此把它稍稍具体点。假设子系统内有三个模块,分别是Module-A、Module-B和Module-C,它们分别有一个示例方法,那么此时示例的整体结构图如下:
在这里插入图片描述
在这个对象图中,出现了两个角色:
1.1.1 门面(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
1.1.2 子系统(SubSystem)角色 :可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由ModuleA、ModuleB、ModuleC三个类组合而成)。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。
总结一下门面模式的核心:Facade门面对象
(1)知道所有子角色的功能和责任
(2)将客户端发来的请求委派到子系统中,没有实际的业务逻辑
(3)不参与子系统内业务逻辑的实现,不建议使用继承来改变或增加业务(失去了门面模式的意义)
从上面的门面模式说明,我们可以得出一点:slf4j只是一个日志标准,不是日志系统夫人具体实现;因此,slf4j只做的动作有:
1.2.1 提供目前常用日志框架(log4j,jul,logback,simple等)的日志接口
1.2.2 提供获取使用具体日志框架对象的方法
可以查看上面官方框架图,一目了然。
1.2 SLF4J的具体实现及使用
工作时间忙,后面有空再续。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值