Log4J日志组件

7/7/2022 后端Java

[TOC]

Log4J(log for java)是常用的日志管理组件。

Log4J是Apache的 一个开源项目。通过Log4J可以将日志信息输出到控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等,并且能控制每一条日志的输出格式、设置每一条日志信息的级别,以便于更加细致地控制日志的生成过程,方便系统维护。

Log4J的使用可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

# Log4J的三个主要组件

# 记录器Loggers

记录器Loggers,主要作用控制日志输出类别。

Loggers级别:ALL TRACE DEBUG INFO WARN ERROR FATAL OFF,分别用来指定日志信息的重要程度。

Loggers级别的优先级顺序:OFF>FATAL>ERROR >WARN >INFO >DEBUG>TRACE>ALL 。

Loggers级别的控制规则:只输出级别不低于设定级别的日志信息,例如:Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

# 输出源Appenders

输出源Appenders,主要作用控制日志输出的地方。

禁用和使用日志请求只是Log4J的基本功能,Log4J日志系统还提供许多强大的功能,比如:允许把日志输出到不同的地方,如控制台(Console)、文件(Files)等;可以根据天数或者文件大小产生新的文件;可以以流的形式发送到其它地方等等。

常使用的类如下:

org.apache.Log4J.ConsoleAppender(控制台)
org.apache.Log4J.FileAppender(文件)
org.apache.Log4J.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.Log4J.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.Log4J.WriterAppender(将日志信息以流格式发送到任意指定的地方)
1
2
3
4
5

配置模式:

Log4J.appender.appenderName = className
Log4J.appender.appenderName.Option1 = value1
…
Log4J.appender.appenderName.OptionN = valueN
1
2
3
4

# 布局Layouts

布局Layouts,主要作用控制日志以何种形式输出。

Log4J可以在Appenders的后面附加Layouts来格式化日志的输出。

Layouts提供四种日志输出样式:HTML样式、自由指定样式、包含日志级别与信息的样式、包含日志时 间、线程、类别等信息的样式。

常使用的类如下:

org.apache.Log4J.HTMLLayout(以HTML表格形式布局)
org.apache.Log4J.PatternLayout(可以灵活地指定布局模式)
org.apache.Log4J.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.Log4J.TTCCLayout(包含日志产生的时间、线程、类别等信息)
1
2
3
4

配置模式

Log4J.appender.appenderName.layout =className
Log4J.appender.appenderName.layout.Option1 = value1
…
Log4J.appender.appenderName.layout.OptionN = valueN
1
2
3
4

综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

# Log4J配置使用详解

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件log4j.properties(键=值)。

log4j.properties配置文件说明

# 定义根记录器

# 定义root根记录器
log4j.rootCategory=INFO, stdout , R

# 根记录器输出源 stdout 配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

# 根记录器输出源 R 配置
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
1
2
3
4
5
6
7
8
9
10
11
12
13

# 定义非根记录器

​ 定义一个非根记录器的格式为:

log4j.logger.loggerName1 = [ level ], appendName1,…appendNameN
……
log4j.logger.loggerNameM = [ level ], appendName1, …appendNameN
1
2
3

​ 我们可以定义任意个非根记录器。

# 指定特定包下的所有类的打印级别,以下这些包的设置可根据项目的实际情况而自行定制
log4j.logger.com.neusoft=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
log4j.logger.org.displaytag=ERROR
1
2
3
4
5
6
7

# 参考资料

Log4j的配置与使用详解 (opens new window)

上次更新时间: 6/16/2023, 10:07:02 AM