大纲:
- 配置文件结构
- 配置文件结构说明
- 控制台输出配置
- 将日志输出到文件,自动封存日志
- 将日志输出到文件,并按日期进行封存
- 自定义 Appender
一、配置文件结构
log4j 配置主要由三个重要的组建构成:
- 日志信息的优先级
- 日志信息的输出目的地
- 日志信息的输出格式
日志级别由低到高:ALL、DEBUG、INFO、WARN、ERROR、FATAL、OFF
Log4j 提供的 Appender 有以下几种:
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每日生产一个日志文件)
- org.apache.log4j.RollingFileAppender(文件到达指定尺寸的时候生产一个新文件)
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j 提供的 layout 有以下几种:
- org.apache.log4j.HTMLLayout(以 HTML 表格形式布局)
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
- org.apache.log4j.TICCLayout(包含日志产生的时间、线程、类别等等信息)
1、定义需要用到的rootLogger
log4j.rootLogger=INFO,A1,R,E,MyAppender
2、分别对 rootLogger 进行各自的配置
A、控制台输出配置
#初始化 appender 实例 A1 为 org.apache.log4j.ConsoleAppender 类的一个实例
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# 输出控制台
log4j.appender.A1.Target=System.out
# 创建 A1.layout 为 org.apache.log4j.PatternLayout 的实例
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# 配置日志输出格式
log4j.appender.A1.layout.ConversionPattern=[%c]%m%n
B、将日志输出到文件,自动封存日志
# 实例化 org.apache.log4j.RollingFileAppender 对象 R
log4j.appender.R=org.apache.log4j.RollingFileAppender
# 配置文件输出路径
log4j.appender.R.File=sshf.log
# 当文件大小大于 10MB 时,封存日志,命名为sshf.log.1、sshf.log.2
log4j.appender.R.MaxFileSize=10MB
# 备份文件数,最大为2,当文件数大于 2 时,
# 会自动删除最先生成的备份文件,这里为 sshf.log.2
log4j.appender.R.MaxBackupIndex=2
# 接收日志级别配置,ALL 和 ALL 以上级别的日志
log4j.appender.R.Threshold=ALL
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
C、将日志输出到文件,并按日期进行封存
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=Error.log
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
# 封存格式,即Error.log.2016-06-17,当第二天有日志输出时,才会备份
# 第一天输出的日志,并将 Error.log 清空
log4j.appender.E.datePattern='.'yyyy-MM-dd
# 是否追加到文件末尾
log4j.appender.E.append=true
D、自定义 Appender
# com.spstudy.logAppernder.MyAppender 为我自定义的类,该类继承了
# org.apache.log4j.DailyRollingFileAppender
log4j.appender.MyAppender=com.spstudy.logAppernder.MyAppender
log4j.appender.MyAppender.File=WARN.log
log4j.appender.MyAppender.Threshold=WARN
log4j.appender.MyAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MyAppender.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
log4j.appender.MyAppender.datePattern='.'yyyy-MM-dd
log4j.appender.MyAppender.append=true
com.spstudy.logAppernder.MyAppender 类,只输出相应级别的log
package com.spstudy.logAppernder;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;
public class MyAppender extends DailyRollingFileAppender {
@Override
public boolean isAsSevereAsThreshold(Priority priority) {
//只判断是否相等,而不判断优先级
return this.getThreshold().equals(priority);
}
}
相关网站: