Log4j在项目中的运用

 

Log4j 在 WEB 项 目 中 的 使 用
Log4jWEB中的应用步骤:
1.         下载log4j的jar包。
到http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.15/apache-log4j-1.2.15.zip这里可以下载到最新版本。
2.         复制jar包。解压后目录为apache-log4j-1.2.15,打开此目录把下面的log4j-1.2.15.jar复制到应用的WEB-INF/lib目录下。
3.         创建log4j配置文件。Log4j有两种形式的配置,一种以xml文件的格式,一种是以属性文件的格式,实际运用中一般会采用属性文件的形式,这样看起来更直观,此处以属性文件格式为例。在应用的WEB-INF/classes目录下新建 log4j.properties文件。
4.         编写属性文件内容。这是重点,由于内容很多网上讲的也很多,很具体的东西可以到网上搜索一下,这里就针对目前项目中常用的log4j.properties文件进行介绍。
5.         项目中的log4j.properties文件如下:
注:log4j有七个级别logger(OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL),其级别为向下屏蔽,其中OFF会关闭所有级别的输出,ALL会输出所有级别的log。此处设置所有的log输出为log4j.rootLogger=WARN,则意味着只有WARN,ERROR,
FATAL被输出,DEBUG,INFO将被屏蔽。此处的stdout与fileout是指的log的两种输出形式,下面有其具体定义。
log4j.rootLogger=WARN, stdout, fileout
注:设置stdout的输出形式为控制台输出。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
注:定义stdout的输出布局,log4j提供四种输出布局:
HTMLLayout:以HTML表格形式布局。
PatternLayout:灵活的指定布局模式。
SimpleLayout:包含日志信息的级别和信息字符串。
TTCCLayout:包含日志产生的时间、线程、类别等等信息。
    此处使用第二种布局(PatternLayout)输出。
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
注:上面选择灵活定制布局输出后此句定义log的具体输出样式。
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c (%F/:%L) - %m%n
注:定义fileout为输出到文件,并根据指定的文件大小产生新的文件。
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
注:指定log的输出路径。
log4j.appender.fileout.File=D/://working/apache-tomcat-5.5.17/logs/epsiii.log
注:设置保存份备份文件的最大数。
log4j.appender.fileout.MaxBackupIndex=10
注:设置日志文件的大小,如果文件超过此大小就会自动备份成epsiii.log.1..n这种形式。
log4j.appender.fileout.MaxFileSize=1024KB
注:设置fileout的输出布局为灵活指定布局模式。
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
注:指定fileout输出布局的具体输出样式。
log4j.appender.fileout.layout.conversionPattern=%d [%t] %-5p %c (%F/:%L) - %m%n
注:设置到具体类的日志输出级别。其中logger类相当于category类新版本所以兼容了category类,可以互换,但建议用logger类。
log4j.category.cn.bidlink.order.web.action=DEBUG
log4j.logger.cn.bidlink.workflow.application=DEBUG
log4j.category.cn.bidlink.order.web.page=DEBUG
log4j.category.cn.bidlink.order.service.impl=DEBUG
log4j.category.cn.bidlink.order.model=DEBUG
log4j.category.cn.bidlink.order.service=DEBUG
log4j.category.cn.bidlink.order.tool=DEBUG
log4j.logger.cn.bidlink=WARN
注:设置项目中用到的一些其它技术的日志级别。也相当于设置到具体的类。
log4j.category.org.springframework.test=INFO
log4j.logger.org.hibernate.SQL=ERROR
log4j.logger.org.apache.velocity=WARN
log4j.logger.org.springframework.orm.hibernate3=DEBUG
6.         补充:
a)         Log4j在spring中有些方便的地方:
(1) 修改log4j.preperties文件不需要重启WEB应用。
(2) 在log文件路径的定义不需要写绝对路径。
(3) 可以把logr4j.properties文件与其它属性文件一起放在WEB-INF/目录下,而不是Class-Path下。
在web.xml中需要增加的配置内容:
注:此处配置log4j.properties路径,可以不在classpath下。
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
注:配置多长时间读取一次log4j.properties文件,而不用重启WEB应用。
<context-param>
 <param-name>log4jRefreshInterval</param-name>
 <param-value>60000</param-value>
</context-param>
注:初始化lgo4j日志引擎。Spring会把web目录的路径设置到其系统变量中,然后在log4j.properties中可以通过${webapp..root}进行引用。如:
log4j.appender.R.File=${epsiii.root}/WEB-INF/logs/epsiii.log 指定日志文件的地址。但是此监听器只能应用在 Web 应用部署后 WAR 文件会解包的 Web 应用服务器上。
<listener>
 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
b)        如果觉得把log4j.properties放在Class-Path下不太保险,那大可自己写程序来搞定:
       import  org.apache.log4j.Logger;
import  org.apache.log4j.PropertyConfigurator;
 
import  javax.servlet. * ;
import  javax.servlet.http. * ;
public   class  Log4jInit  extends  HttpServlet {
 public   void  init(ServletConfig config)  throws  ServletException {
        super .init(config);
        String prefix  =  getServletContext().getRealPath( " / " );
        String file  =  getInitParameter( " log4j " ); 
        System.out.println( " init log4j... " );
         if  (file  !=   null ){
          PropertyConfigurator.configure(prefix + file);
        } else {
                 PropertyConfigurator.configure(prefix + " log4j.properties " );
        }
 }


然后同时要在web.xml下配置:
< servlet > 
          < servlet-name > log4jInit </ servlet-name > 
          < servlet-class > powerwind.servlet.Log4jInit </ servlet-class > 
               < init-param > 
                 < param-name > log4j </ param-name > 
注:此处的log4j.properties的位置就可以随心所欲啦。
                  < param-value > WEB-INF/classes/log4j.properties </ param-value > 
               </ init-param > 
          < load-on-startup > 1 </ load-on-startup > 
</ servlet > 
c)          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值