【体系-单体架构】06-日志记录工具Log4j

01 Log4j简介

概述:一个完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需要向控制台或文件等位置输出大量信息。这些信息的输出, 在很多时候是使用 System.out.println() 无法完成的(系统输入浪费内存和CPU资源,对系统性能影响非常大)。日志信息根据用途与记录内容的不同,分为 调试日志、运行日志、异常日志 等。Log4j 的全称为 Log for java,即专门用于 Java 语言的日志记录工具


02 Log4j 日志级别

概述:为了方便对于日志信息的输出显示,对日志内容进行了分级管理。日志级别由高到低,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈,即debug,常用于调试线程)


03 日志输出控制文件

日志输出简介:Log4j 的日志输出控制文件,主要由三个部分构成

  • 日志信息的输出位置:控制日志信息将要输出的位置,是控制台还是文件等
  • 日志信息的输出格式:控制日志信息的显示格式,即以怎样的字符串形式显示
  • 日志信息的输出级别:控制日志信息的显示内容,即显示哪些级别的日志信息

有了日志输出控制文件,代码中只要设置好日志信息内容及其级别即可,通过控制文件便可控制这些日志信息的输出了

属性配置文件:日志属性文件 log4j.properties 是专门用于控制日志输出的。其主要进行三方面控制

  • 输出位置:控制日志将要输出的位置,是控制台还是文件等
  • 输出布局:控制日志信息的显示形式
  • 输出级别:控制要输出的日志级别

日志属性文件由两个对象组成:日志附加器(由日志输出位置定义,由其它很多属性进行修饰,如输出布局、文件位置、文件大小等,所谓日志附加器,就是为日志记录器附加上很多其它设置信息。附加器的本质是一个接口,其定义语法为:log4j.appender.appenderName = 输出位置)与根日志(为 Java 代码中的日志记录器,其主要由两个属性构成:日志输出级别与日志附加器)

附加器实现类

  • org.apache.log4j.ConsoleAppender:日志输出到控制台
  • org.apache.log4j.FileAppender:日志输出到文件
  • org.apache.log4j.RollingFileAppender:当日志文件大小到达指定尺寸的时候将产生一个新的日志文件
  • org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件

布局类型

  • org.apache.log4j.HTMLLayout:网页布局,以 HTML 表格形式布局
  • org.apache.log4j.SimpleLayout:简单布局,包含日志信息的级别和信息字符串
  • org.apache.log4j.PatternLayout:匹配器布局,可以灵活地指定布局模式。其主要是通过设置 PatternLayout 的 ConversionPattern 属性值来控制具体输出格式的

打印参数:Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息

  • %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 , SSS},输出类似:2002年10月18日 22:10:28,921
  • %l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )

04 Log4j日志文件示例

Slf4j简介:slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则而已。所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的org.apache.log4j.Logger,JDK 自带的 java.util.logging.Logger 以及 log4j 等
Facade:即外观模式(门面模式、包装模式),不关心具体实现只需要直接调用,例如在实际开发生产过程中,三层架构分别有人专门写dao、service、controller和前端页面,其中controller并不需要知道service层具体实现而只需要结果
地址gitee log4j实例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值