javalog4jxml配置详解,log4j配置详解(⾮常详细)
资料:
===========================================================================================
===========================================================================================
log4j.properties⽂件例⼦
1.================================================================
这个⽂件就是本⽂的重点,也就是log4j的配置⽂件。
# Set root logger level to DEBUG and its only appender to A1
#log4j中有五级logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7
#配置根Logger,其语法为:
#Logger = [ level ] , appenderName, appenderName, …
#这⼀句设置以为着所有的log都输出
#如果为Logger=WARN, 则意味着只有WARN,ERROR,FATAL
#被输出,DEBUG,INFO将被屏蔽掉.
# A1 is set to be a ConsoleAppender.
#log4j中Appender有⼏层如控制台、⽂件、GUI组件、甚⾄是套接⼝服务器、NT的事件记录器、UNIX Syslog守护进程等
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppenderjava修改html文件
# 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
#灵活定义输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
#d 时间 ....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm: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-dd HH:mm:ss} [%c]-[%p] %m%n
2.==========================================================================================
下⾯我给出⼀个在weblogic下使⽤log4j的配置过程,⾸先给出这个配置⽂件的完整信息。
#Logger=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.HTMLLayout(以HTML表格形式布局),
*org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
*org.apache.log4j.SimpleLayout(包含⽇志信息的级别和信息字符串),
*org.apache.log4j.TTCCLayout(包含⽇志产⽣的时间、线程、类别等等信息)
*/
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm: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-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
---------------------------------------------------------------------------------------------------------------------------------------------------
错误⽇志发送email
1. 打开log4j.properties⽂件
2. rootLogger加上⼀个Appender, 即MAIL, 如Logger=ERROR,A1,MAIL
3. 配置Appender信息,在⽂件的末尾加上以下部分
# Configuration for receiving e-mails when ERROR messages occur.
#⾃定义的Appender
log4j.appender.MAIL=org.apache.log4j.SMTPAppender
#⽇志的错误级别
log4j.appender.MAIL.Threshold=ERROR
#缓存⽂件⼤⼩,⽇志达到512K时发送Email
log4j.appender.MAIL.BufferSize=512
#发件⼈
log4j.appender.MAIL.From=test@163
#发送邮件的服务器
log4j.appender.MAIL.SMTPHost=smtp.163
#邮件的标题
log4j.appender.MAIL.Subject=Log4J Message
#⽇志邮件的接收者
log4j.appender.MAIL.To=test@163
#⽇志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版本,去看,发现已经有新的版本了: 1.2.11,呵呵,窃喜。这样的简单、基本的需求Log4J开发组应该已经添加上了吧。
下载、查看,再次失望之极!
看来只有⾃⼰动⼿添加了。本来应该重新定义⼀个名字,算做⼀个⾃定义Appender吧,但为了使我很多应⽤中的log4j.properties不⽤修改过多,就直接在原来的SMTPAppender.java上做了修改。另外⼀个更重要的原因是:
我认为:这是⼀个基本的、必须的SMTPAppender应该具有的功能。
主要在SMTPAppender.java中添加了如下代码:
a. 添加实例变量
private String smtpUsername;
private String smtpPassword;
b. 将 activateOptions() ⽅法中的
Session session = Instance(props, null);
修改为:
if(smtpPassword != null && smtpUsername != null) {
// Setup mail server authentication
props.put("mail.smtp.auth", "true");
// props.put("ansport.protocol", "smtp");
authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(smtpUsername, smtpPassword);
}
};
}
// Get session
Session session = DefaultInstance(props,authenticator);
c. 添加Set⽅法
public void setSMTPPassword(String smtpPassword) {
this.smtpPassword = smtpPassword;
}
public void setSMTPUsername(String smtpUsername) {
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.2. Log4j简介
在强调可重⽤组件开发的今天,除了⾃⼰从头到尾开发⼀个可重⽤的⽇志操作类外,Apache为我们提供了⼀个强有⼒的⽇志操作包-
Log4j。
Log4j是Apache的⼀个开放源代码项⽬,通过使⽤Log4j,我们可以控制⽇志信息输送的⽬的地是控制台、⽂件、GUI组件、甚⾄是套接⼝服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每⼀条⽇志的输出格式;通过定义每⼀条⽇志信息的级别,我们能够更加细致地控制⽇志的⽣成过程。最令⼈感兴趣的就 是,这些可以通过⼀个配置⽂件来灵活地进⾏配置,⽽不需要修改应⽤的代码。
此外,通过Log4j其他语⾔接⼝,您可以在C、C+ +、.Net、PL/SQL程序中使⽤Log4j,其语法和⽤法与在Java程序中⼀样,使得多语⾔分布式系统得到⼀个统⼀⼀致的⽇志组件模块。⽽且,通 过使⽤各种第三⽅扩展,您可以很⽅便地将Log4j集成到J2EE、JINI甚⾄是SNMP应⽤中。
本⽂介绍的Log4j版本是 1.2.3。作者试图通过⼀个简单的客户/服务器Java程序例⼦对⽐使⽤与不使⽤Log4j 1.2.3的差别,并详细讲解了在实践中最常使⽤Log4j的⽅法和步骤。在强调可重⽤组件开发的今天,相信Log4j将会给⼴⼤的设计开发⼈员带来⽅ 便。加⼊到Log4j的队伍来吧!
>>>> 2. ⼀个简单的例⼦ <<<<
我们先来看⼀个简单的例⼦,它是⼀个⽤Java实现的客户/服务器⽹络程序。刚开始我们不使⽤Log4j,⽽是使⽤了⼀系列的打印语句,然后我们将使⽤Log4j来实现它的⽇志功能。这样,⼤家就可以清楚地⽐较出前后两个代码的差别。
2.1. 不使⽤Log4j
2.1.1. 客户程序
package log4j ;
import java.io.* ;
import java.* ;
/**
*
*
Client Without Log4j
*
Description: a sample with log4j
* @version 1.0
*/
public class ClientWithoutLog4j {
/**
*
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论