Log4j0:
1:log4j格式详解1.1:日志级别
log4j.rootLogger=,
日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
CONSOLE:控制台
注意,需在控制台输入,只需将其中一个
注意,rootLogger默认是对整个工程生效
注意,如果只想对某些包操作,那么:
注意,这样做可以区分
注意,如果末尾为R
注意,如果没有为
1.2:日志输出类型
log4j.appender.appender1=org.apache.log4j.[控制台|]
1.2.1:ConsoleAppender(控制台)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:
Target=System.err
1.2.2:FileAppender(文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:
File=mylog.txt:
Append=false:
1.2.3:DailyRollingFileAppender(每天产生一个日志文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:
File=mylog.txt:
Append=false:
DatePattern=
1)
2)
3)
4)
5)
6)
1.2.4:RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:
File=mylog.txt:
Append=false:
MaxFileSize=100KB:
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
1.2.5:WriteAppender(将日志信息以流格式发送到任意指定的地方)1.2.6:JDBCAppender(将日志信息保存到数据库中)
配置参数详见
1.2.7:JDBCAppender(将日志发送到邮箱)
配置参数详见
1.3:日志输出路径
log4j.appender.appender1.File=[下列参考]
#0:绝对路径:f:/logs/backup.log
#1:相对路径${user.home}/logs/backup.log
#2:相对路径:/logs/backup.log
#3:
#4:
1.4:日志布局格式
log4j.appender.appender1.layout=org.apache.log4j.[HTMLLayout|SimpleLayout|TTCCLayout]
HTMLLayout
SimpleLayout(包含日志信息的级别和信息字符串)
TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
PatternLayout(可以灵活的指定布局格式,常用)
1.5:日志输出格式
log4j.appender.appender1.layout.ConversionPattern=[下列参考]
例如,
%c输出日志信息所属的类的全名
%d
%f输出日志信息所属的类的类名
%l输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m
%n
%p
%r输出自应用启动到输出该日志信息所耗费的毫秒数
%t输出产生该日志事件的线程名
可参考:
1.6:其他配置
log4j.logger.org.springframework=OFF
log4j.logger.org.apache.struts2=OFF
log4j.logger.com.opensymphony.xwork2=OFF
log4j.rootLogger=INFO,Error,
可参考
1.7:总结一下:
Logger类:完成日志记录,设置日志信息级别
Appender类:决定日志去向,终端、DB、硬盘
Layout类:决定日志输出的样式,,例如包含当前线程、行号、时间
2:使用场景2.1:按日期产生日志文件
#
log4j.rootLogger=ERROR
#DailyRollingFileAppender每天产生一个日志文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#设置日志文件保存路径
log4j.appender.R.File=log/backup.log
#日志输出格式
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-ddHH\:mm\:ss}[%c]-[%p]%m%n
#
log4j.appender.R.DatePattern=’.’yyyy-MM-dd
#日志布局格式
log4j.appender.R.layout=org.apache.log4j.PatternLayout
2.2:按文件大小产生日志文件
#
log4j.rootLogger=ERROR
#RollingFileAppender:文件大小到达指定尺寸时产生一个新的文件
log4j.appender.R=org.apache.log4j.RollingFileAppender
#设置日志文件保存路径
log4j.appender.R.File=log/backup.log
#
log4j.appender.R.MaxFileSize=3KB
#设置日志文件备份的最大序号
log4j.appender.R.MaxBackupIndex=10
#日志输出格式
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss}[%c]-[%p]%m%n
#日志布局格式
log4j.appender.R.layout=org.apache.log4j.PatternLayout
2.3:日志发到邮箱2.3.1:
log4j-1.2.15.jar
mail.jar
activation.jar
2.3.2:测试环境是否能发送邮件
importorg.apache.log4j.Logger;
importorg.apache.log4j.PatternLayout;
importorg.apache.log4j.net.SMTPAppender;
publicclassTestLog4jSendMail{
staticLoggerlogger=Logger.getLogger(TestLog4jSendMail.class);
SMTPAppenderappender=newSMTPAppender();
publicTestLog4jSendMail(){
try{
appender.setSMTPUsername("username");
appender.setSMTPPassword("password");
appender.setTo("xxx@xxx.com");
appender.setFrom("yyy@yyy.com");
//SMTP服务器smtp.163.com
appender.setSMTPHost("smtp.163.com");
appender.setLocationInfo(true);
appender.setSubject("TestMailFromLog4J");
appender.setLayout(newPatternLayout());
appender.activateOptions();
logger.addAppender(appender);
logger.error("HelloWorld");
}catch(Exceptione){
e.printStackTrace();
logger.error("PrintingERRORStatements",e);
}
}
publicstaticvoidmain(Stringargs[]){
newTestLog4jSendMail();
}
}
2.3.3:配置文件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#日志的错误级别
log4j.appender.MAIL.Threshold=ERROR,INFO,DEBUG
#log4j.appender.MAIL.BufferSize=10
#发送邮件的服务器(smtp.163.com)
log4j.appender.MAIL.SMTPHost=smtp.163.com
#邮件主题
log4j.appender.MAIL.Subject=ErrorMessage
#发送邮件箱的用户
log4j.appender.MAIL.SMTPUsername=xxx@163.com
#发送邮件箱的密码
log4j.appender.MAIL.SMTPPassword=xxx
#发送邮件箱
log4j.appender.MAIL.From=xxx@163.com
#接受邮件箱
log4j.appender.MAIL.To=yyy@qq.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#在
log4j.logger.com.study.logMail=ERROR,MAIL
2.3.4:反馈如下
2.4:日志保存到数据库2.4.1:创建数据库或表
CREATEDATABASElog4jdb
CREATETABLERESLOG(
createTimeVARCHAR(20),#日志记录时间
threadVARCHAR(200),#线程名称
levelTextVARCHAR(100),#
logclassVARCHAR(1000),#发生事件的类全路径
messageVARCHAR(4000),#日志消息
usernameVARCHAR(4000)#用户
)#
2.4.2配置参数
#设置捕获的级别
log4j.rootLogger=ERROR
#设置为日志保存到数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#
#
log4j.appender.db.BufferSize=10
#数据库连接字符串
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/log4jdb
#数据库驱动,要求导入jar!!!
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
#数据库用户名
log4j.appender.DATABASE.user=root
#数据库密码
log4j.appender.DATABASE.password=123456
#
诚实是人生绝妙的法宝。虽然对人诚实,