log4j配置详解Word文件下载.docx
《log4j配置详解Word文件下载.docx》由会员分享,可在线阅读,更多相关《log4j配置详解Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
0
ERROR
3
WARN
4
INFO
6
DEBUG
7
Appender
为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:
日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
打印参数:
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:
)
2.在代码中初始化Logger:
1)在程序中调用BasicConfigurator.configure()方法:
给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"
%-4r[%t]%-5p%c%x-%m%n"
,还有根记录器的默认级别是Level.DEBUG.
2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。
3.为不同的Appender设置日志输出级别:
当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!
?
那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。
当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold
就能实现,比如下面的例子:
[配置文件]
###
set
log
levels
###
debug
stdout
D
E
输出到控制台
log4j.appender.stdout
org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target
System.out
log4j.appender.stdout.layout
org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern
%d{ABSOLUTE}
%5p
%c{
1
}:
%L
-
%m%n
输出到日志文件
log4j.appender.D
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
logs/log.log
log4j.appender.D.Append
true
log4j.appender.D.Threshold
##
输出DEBUG级别以上的日志
log4j.appender.D.layout
log4j.appender.D.layout.ConversionPattern
%-d{yyyy-MM-dd
ss}
%t:
%r
%p
保存异常信息到单独文件
logs/error.log
异常日志文件名
只输出ERROR级别以上的日志!
!
[代码中使用]
public
class
TestLog4j
{
static
void
main(String[]
args)
PropertyConfigurator.configure(
"
D:
/Code/conf/log4j.properties
);
Logger
logger
Logger.getLogger(TestLog4j.
logger.debug(
logger.error(
error
}
}
运行一下,看看异常信息是不是保存在了一个单独的文件error.log中。
----------------------------------------------------------------------------------------------------------------------------------------------------
资料:
=============================================================================================
===============================================================================================
log4j.properties文件例子
1.================================================================
这个文件就是本文的重点,也就是log4j的配置文件。
#SetrootloggerleveltoDEBUGanditsonlyappendertoA1
#log4j中有五级logger
#FATAL0
#ERROR3
#WARN4
#INFO6
#DEBUG7
#配置根Logger,其语法为:
#log4j.rootLogger=[level],appenderName,appenderName,…
log4j.rootLogger=INFO,A1,R
#这一句设置以为着所有的log都输出
#如果为log4j.rootLogger=WARN,则意味着只有WARN,ERROR,FATAL
#被输出,DEBUG,INFO将被屏蔽掉.
#A1issettobeaConsoleAppender.
#log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#A1使用的输出布局,其中log4j提供4种布局.org.apache.log4j.HTMLLayout(以HTML表格形式布局)
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式具体查看log4jjavadocorg.apache.log4j.PatternLayout
#d时间....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-ddHH:
ss}[%c]-[%p]%m%n
#R输出到文件RollingFileAppender的扩展,可以提供一种日志的备份功能。
log4j.appender.R=org.apache.log4j.RollingFileAppender
#日志文件的名称
log4j.appender.R.File=log4j.log
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
#保存一个备份文件
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.TTCCLayout
#log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-ddHH:
ss}[%c]-[%p]%m%n
2.==========================================================================================
下面我给出一个在weblogic下使用log4j的配置过程,首先给出这个配置文件的完整信息。
#log4j.rootLogger=INFO,A1,R//这一句指定了日志输出的级别为info,A1和R分别代表日志输出到什么地方。
log4j.category.hybl_wshabcm=debug,A1,R//这一句指定了日志具体输出哪个包的信息,以及输出位置
log4j.appender.A1=org.apache.log4j.ConsoleAppender//这里指定了日志输出的第一个位置A1是控制台ConsoleAppender
/*
*其中,Log4j提供的appender有以下几种:
*org.apache.log4j.ConsoleAppender(控制台),
*org.apache.log4j.FileAppender(文件),
*org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
*org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
*org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
*
*/
log4j.appender.A1.layout=org.apache.log4j.PatternLayout//指定A1的布局模式
*其中,Log4j提供的layout有以下几种:
×
*org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
*org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
*org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
ss,SSS}[%c]-[%p]%m%n//指定日志的输出格式
log4j.appender.R=org.apache.log4j.RollingFileAppender//指定以文件的方式输出日志
log4j.appender.R.File=c:
/sys.html//文件位置
log4j.appender.R.MaxFileSize=500KB//文件最大尺寸
log4j.appender.R.MaxBackupIndex=1//备份数
log4j.appender.R.layout=org.apache.log4j.HTMLLayout//文件的格式为Html格式
#log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-ddHH:
ss,SSS}[%t][%c][%p]-%m%n
---------------------------------------------------------------------------------------------------------------------------------------------------
错误日志发送email
1.
打开log4j.properties文件
2.
rootLogger加上一个Appender,即MAIL,如log4j.rootLogger=ERROR,A1,MAIL
3.
配置Appender信息,在文件的末尾加上以下部分
#Configurationforreceivinge-mailswhenERRORmessagesoccur.
#自定义的Appender
log4j.appender.MAIL=.SMTPAppender
#日志的错误级别
log4j.appender.MAIL.Threshold=ERROR
#缓存文件大小,日志达到512K时发送Email
log4j.appender.MAIL.BufferSize=512
#发件人
log4j.appender.MAIL.From=test@
#发送邮件的服务器
log4j.appender.MAIL.SMTPHost=
#邮件的标题
log4j.appender.MAIL.Subject=Log4JMessage
#日志邮件的接收者
log4j.appender.MAIL.To=test@
#日志PatternLayout
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#日志的格式
log4j.appender.MAIL.layout.ConversionPattern=[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n
以上文件皆测试通过,如不通过请查看自己的email发送环境.
查看了SMTPAppender.java的源代码,才发现Log4J缺省提供的SMTPAppender并不支持SMTP的认证功能。
难道现在匿名的SMTP邮件服务器很多吗?
我手头的是Log4J的1.2.8版本,去logging.apache.org看,发现已经有新的版本了:
1.2.11,呵呵,窃喜。
这样的简单、基本的需求Log4J开发组应该已经添加上了吧。
下载、查看,再次失望之极!
看来只有自己动手添加了。
本来应该重新定义一个名字,算做一个自定义Appender吧,但为了使我很多应用中的log4j.properties不用修改过多,就直接在原来的SMTPAppender.java上做了修改。
另外一个更重要的原因是:
我认为:
这是一个基本的、必须的SMTPAppender应该具有的功能。
主要在SMTPAppender.java中添加了如下代码:
a.添加实例变量
privateStringsmtpUsername;
privateStringsmtpPassword;
b.将activateOptions()方法中的
Sessionsession=Session.getInstance(props,null);
修改为:
if(smtpPassword!
=null&
&
smtpUsername!
=null){
//Setupmailserverauthentication
props.put("
mail.smtp.auth"
"
true"
//props.put("
mail.transport.protocol"
smtp"
authenticator=newAuthenticator(){
protectedPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication(smtpUsername,smtpPassword);
}
};
//Getsession
Sessionsession=Session.getDefaultInstance(props,authenticator);
c.添加Set方法
publicvoidsetSMTPPassword(StringsmtpPassword){
this.smtpPassword=smtpPassword;
publicvoidsetSMTPUsername(StringsmtpUsername){
this.smtpUsername=smtpUsername;
编译,并重新打包log4j-1.2.8.jar。
在应用中替换原log4j-1.2.8.jar包,并修改log4j.properties文件,在SMTPAppender的配置中添加如下两行:
log4j.appender.MAIL.SMTPUsername=
log4j.appender.MAIL.SMTPPassword=
OK,现在这个SMTPAppender就可以使用需要用户名、密码验证的SMTP服务器(现在绝大多数SMTP服务器)进行Email报警发送了。
-------------------------------------------------------------------------------------------------------------------------------------
log4j详解
根据网络资料整理
>
1.概述<
<
1.1.背景
在应用程序中添加日志记录总的来说基于三个目的:
监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;
跟踪代码运行时轨迹,作为日后审计的依据;
担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。
最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语