使用log4j生成动态日志文件-文件名根据时间自动生成

依赖的jar 

commons-logging-1.1.3.jar  log4j-1.2.17.jar  junit-4.10.jar(测试时使用)

log4j.properties配置

[java]  view plain  copy
  1. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
  2. log4j.appender.stdout.Target=System.out  
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
  4. log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p %l : %m%n  
  5.   
  6. log4j.appender.file=org.apache.log4j.FileAppender  
  7. log4j.appender.file.layout=org.apache.log4j.PatternLayout  
  8. log4j.appender.file.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss}] %p %l : %m%n  
  9.   
  10. # ConversionPattern参数的格式含义  
  11. # 格式名 含义   
  12. # %c 输出日志信息所属的类的全名   
  13. # %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18221028   
  14. # %f 输出日志信息所属的类的类名   
  15. # %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行   
  16. # %m 输出代码中指定的信息,如log(message)中的message   
  17. # %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”   
  18. # %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推   
  19. # %r 输出自应用启动到输出该日志信息所耗费的毫秒数   
  20. # %t 输出产生该日志事件的线程名  
  21.   
  22. log4j.rootLogger=info,stdout  

日志生成器 LoggerUtil.java

[java]  view plain  copy
  1. package com.utils.log4j;  
  2.   
  3.   
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6.   
  7. import org.apache.log4j.FileAppender;  
  8. import org.apache.log4j.Level;  
  9. import org.apache.log4j.Logger;  
  10. import org.apache.log4j.PatternLayout;  
  11. import org.apache.log4j.RollingFileAppender;  
  12.   
  13. public class LoggerUtil {  
  14.      
  15.     public static Logger getLog(Class<?> clazz) {  
  16.          
  17.         Logger logger = Logger.getLogger(clazz);  // 生成新的Logger  
  18.         logger.removeAllAppenders(); // 清空Appender,特別是不想使用現存實例時一定要初期化  
  19.         logger.setLevel(Level.DEBUG); // 设定Logger級別。  
  20.         logger.setAdditivity(true); // 设定是否继承父Logger。默认为true,继承root输出;设定false后将不出书root。  
  21.           
  22.         FileAppender appender = new RollingFileAppender(); // 生成新的Appender  
  23.         PatternLayout layout = new PatternLayout();  
  24.         layout.setConversionPattern("[%d{yyyy-MM-dd HH:mm:ss}] %p %l : %m%n"); // log的输出形式  
  25.         appender.setLayout(layout);  
  26.           
  27.         appender.setFile(getTime("yyyy-MM-dd") + ".log");  // log输出路径  
  28.         appender.setEncoding("UTF-8"); // log的字符编码  
  29.         appender.setAppend(true);  //日志合并方式: true:在已存在log文件后面追加 false:新log覆盖以前的log  
  30.         appender.activateOptions();  // 适用当前配置  
  31.           
  32.         logger.addAppender(appender); // 将新的Appender加到Logger中  
  33.         return logger;  
  34.     }  
  35.       
  36.     private static String getTime(String format) {  
  37.         SimpleDateFormat sdf = new SimpleDateFormat(format);  
  38.         return sdf.format(new Date());  
  39.     }  
  40. }  

测试类

[java]  view plain  copy
  1. package com.utils.log4j.test;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.junit.Test;  
  5.   
  6. public class LoggerUtilTest {  
  7.     private static Logger logger = LoggerUtil.getLog(LoggerUtilTest.class);  
  8.       
  9.     @Test  
  10.     public void add() {  
  11.         logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());  
  12.     }  
  13.       
  14.     @Test  
  15.     public void view() {  
  16.         logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());  
  17.     }  
  18.       
  19.     @Test  
  20.     public void edit() {  
  21.         logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());  
  22.     }  
  23.       
  24.     @Test  
  25.     public void delete() {  
  26.         logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());  
  27.     }  
  28.       
  29. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值