slf4j、log4j使用总结

  • slf4j+log4j组合使用的pom依赖
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.21</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
  • 主要元素
       log4j.rootLogger or log4j.rootCategory
       log4j.logger.${appenderName}
           org.apache.log4j.ConsoleAppender
           org.apache.log4j.FileAppender
           org.apache.log4j.DailyRollingFileAppender
           org.apache.log4j.RollingFileAppender
       log4j.appender.${appenderName}.layout
           org.apache.log4j.SimpleLayout
           org.apache.log4j.HTMLLayout
           org.apache.log4j.xml.XMLLayout
           org.apache.log4j.TTCCLayout
           org.apache.log4j.PatternLayout(常用)
       log4j.debug loglog日志输出
       log4j.appender.${appenderName}.Threshold 
       log4j.appender.${appenderName}.layout.ConversionPattern
        #%m——输出代码中指定的消息
#%p——输出优先级,即DEBUG、INFO、WARN、ERROR、FATAL
#%r——输出自应用启动到输出该log信息耗费的毫秒数
#%c——输出所属的类目,通常就是所在类的全名
#%t——输出产生该日志事件的线程名
#%n——输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"
#%d——输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式
#比如:%d{yyy MMM dd HH:mm:ss},输出类似:
#2015年7月21日 12:12:12,921
#%l——输出日志事件的发生位置,包括类目名、发生的线程、以及在代码中的行数
#%X{ip}: MDC。
#%%: 输出一个"%"字符
#%F: 输出日志消息产生时所在的文件名称
#%L: 输出代码中的行号(%l已包含了行号)
#此配置是PatternLayout对应的 其他的layout配置 会出现警告日志log4j.additivity.${appenderName} 设置父类输出
  • logger的继承

og4j.additivity 只是appender时过滤并不影响log4j的继承

log4j配置动态修改配置文件 PropertyConfigurator configure/configureAndWatch

log4j的MDC NDC,我们日志中心的上下文实现

slf4j的format

  • 应用程序中获取日志的初始化流程

  • 日志LogManager的加载

  • 日志属性的处理

  • 打印日志输出逻辑, 以debug为例

  • 核心类/接口
      ○ Logger对记录日志动作的抽象,它提供了记录不同级别日志的接口
      ○ RootLogger在Log4J中,所有Logger实例组成一个单根的树状结构,没有父节点,其Level字段必须设值以防止其他Logger实例都没有设置Level值的情况
      ○ LoggerRepository、Logger实例的容器 其实现类 Hierarchy
      ○ Level 日志级别抽象
      ○ LoggingEvent 日志信息
      ○ Appender 输出
      ○ Layout 输出的格式
      ○ LogManager 将Configurator和LoggerRepository整合在一起
  • 核心类图

  • 扩展

自定义appender ,通过继承AppenderSkeleton

自定义layout,自定义Layout

  • 源码中使用的设计模式

1、适配器模式 logger的封装 Log4jLoggerAdapter

2、单例模式 StaticLoggerBinder

3、工厂模式 ILoggerFactory

4、外观模式 Logger

5、解释器模式 PatternLayout

6、空对象模式 NullAppender 很多时候对象为null也是正常的,但是这个null会导致使用过程中的空指针异常,因此需要使用的地方,在每次使用前都要判断下是否为null,然后再使用,使用空对象可以免去繁琐的判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值