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

本文详细介绍Log4j的日志配置方法及应用实践,包括控制台输出、文件滚动策略及自定义日志文件命名规则等内容。
下载必备的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); 
    }
   
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值