java整合log4j xml 配置 自定义日志文件路径和生成年月日的html文件

下载必备的jar
http://yunpan.cn/ccJEq3IQuEhA4  访问密码 a98f

log4j-core-2.3.jar
log4j-api-2.3.jar

先在src下面创建log4j.xml  配置信息如下: 

<? xml  version = "1.0"  encoding =  "UTF-8" ?>     
<! DOCTYPE  log4j:configuration  SYSTEM  "log4j.dtd"  >     
       
< log4j:configuration  xmlns:log4j =  'http://jakarta.apache.org/log4j/'  >     
      <!-- 控制台输出   -->
     < appender  name  = "config_Console"  class = "org.apache.log4j.ConsoleAppender" >      
                          < layout  class  = "org.apache.log4j.PatternLayout" >      
             < param  name  = "ConversionPattern"    value =  "[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n"  />     
         </ layout  >     
         <!--过滤器设置输出的级别   -->
         < filter  class  = "org.apache.log4j.varia.LevelRangeFilter" >      
             < param  name  = "levelMin"  value = "DEBUG"  /> <!-- 最低级别      -->
             < param  name  = "levelMax"  value = "ERROR"  /> <!-- 最高级别      -->
             < param  name  = "AcceptOnMatch"  value = "true"  />     
         </ filter  >    
     </ appender  >     
   
    <!-- 原有文件基础追加日志 -->
     < appender  name  = "runLog"  class = "org.apache.log4j.RollingFileAppender" >        
         < param  name  = "File"  value = "${catalina.base}/logs/log/server-log.html"  />  <!-- 设置日志输出文件名 -->       
         < param  name  = "Append"  value = "true"  /> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->        
         < param  name  = "MaxBackupIndex"  value = "10"  />     
         < layout  class  = "org.apache.log4j.HTMLLayout" >      
             < param  name  = "ConversionPattern"  value =  "%p (%c:%L)- %m%n"  />      
         </ layout  >     
     </ appender  >     
   
   
   
       <!--  每天产生一个日志 -->
     < appender  name  = "activexAppender"  class =  "com.ismartinfo.ilife.api.dic.MyDailyRollingFileAppender"  >     
         < param  name  = "File"  value = "${catalina.base}/logs/log/" />    
                          < param  name  = "Append"  value = "true"  /> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->        
         < param  name  = "DatePattern"  value = "'.'yyyy-MM-dd"  />       
         < layout  class  = "org.apache.log4j.HTMLLayout" >      
          < param  name  = "ConversionPattern"  value =  "[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n"  />     
         </ layout  >       
     </ appender  >    
       
       
       
     <!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制-->      
     < logger  name  = "com.runway.bssp.activeXdemo"  additivity =  "false" >     
         < priority  value  =  "info" />       
         < appender-ref  ref  = "activexAppender"  />       
     </ logger  >     
    
     <!-- 根logger的设置-->     
     < root  >     
         < priority  value  =  "info" /> <!-- WEB容器启动处理最低级别处理 -->
         < appender-ref  ref  = "config_Console" />  <!--引用控制台输出-->      
         < appender-ref  ref  = "activexAppender" />  <!--引用-->      
     </ root  >     
   
   
</ log4j:configuration >



初始配置 web.xml
     <!-- log4j配置 -->
   < context-param  >
      < param-name  > log4jConfigLocation  </ param-name  >
       < param-value  > classpath:log4j.xml  </ param-value  >
 </ context-param  >            

log4j建议只使用五个级别,级别顺序(由低到高): DEBUG < INFO < WARN < ERROR < FATAL


代码引用:

      private  static  Logger  logger  = LogManager. getLogger(TimerDicM.  class + "词典更新错误,时间"  +StringUtils.getStrDate( new  Date())); 
                        try  {
                                      int  a=1/0;
                                      /*String content=getContent();//写入的文件内容
                                    FileWriter writer = null;
                                    String pathStr = this.getClass().getClassLoader().getResource("")
                                                            .getPath();
                                    // 对 Windows 下获取 物理路径 做 特殊处理
                                    if ("\\".equals(File.separator)) {
                                                pathStr = pathStr.substring(1).replaceAll("/", "\\\\");
                                    }
                                    File file = new File(pathStr + File.separatorChar + fileName);
                                    writer = new FileWriter(file.getPath(), true);
                                    writer.write(content);
                                    writer.close();*/
                        }  catch  (Exception e) {
                                      logger .debug(  "debug错误出现" );
                                      logger .error(  "写入文件时产生了错误,错误信息:"  +e.getMessage());    //error级别的信息,参数就是你输出的信息 
                                      //  TODO : handle exception
                                    e.printStackTrace();
                        }  



年月生成文件夹,以年月日来命名文件
package  com.ismartinfo.ilife.api.dic;

import  java.io.File;
import  java.util.Calendar;
import  java.util.Date;

import  org.apache.log4j.DailyRollingFileAppender;

import  com.ismartinfo.ilife.api.util.StringUtils;
/**
 * 集成 DailyRollingFileAppender 重写file 设置路径
 *  @author  张亮( witt)
 * 人生苦短
 *2015 - 7 - 10
 */
public  class  MyDailyRollingFileAppender  extends  DailyRollingFileAppender {
              /**
             * 自动创建文件夹
             */
     @Override
     public  void  setFile(String file) {
            Calendar cal=Calendar. getInstance();
                          int  year=cal.get(Calendar.  YEAR );  //得到年
                 int  month=cal.get(Calendar.  MONTH )+1;  //得到月,因为从0开始的,所以要加1 
                        String filePath = file+year+  "/" +month+  "/" +  " "
        File fileCheck =  new  File(filePath);
         if  (!fileCheck.exists())
            fileCheck.getParentFile().mkdirs();
            String timePath=filePath+StringUtils. getStrDate( new  Date())+ "_log.html" ;
              super .setFile(timePath); 
    }
   
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值