log4j生成文件名带日期的文件

本文介绍了如何使用log4j配置生成带有日期的文件名的日志文件,以避免日志文件过大。在测试时,需要注意通过修改系统时间来观察不同日期的日志文件生成情况。配置如`log4j.appender.D.DatePattern=_yyyyMMdd`.log`将按年月日创建新文件,更精确的配置如`log4j.appender.D.DatePattern=_yyyyMMdd-HH`.log`会按年月日时创建文件。建议不要设置过于频繁的时间间隔,以免产生过多的日志文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import org.apache.log4j.Logger;
import org.junit.Test;

public class Test {
	// 构造记录器,形参是记录器所在的类,表示要在该类做日志
	private static Logger log = Logger.getLogger(Test.class.getClass());
	@Test
	public void testLog(){
	// 记录下各种级别的信息,这些信息放在哪儿,以哪种方式存放,在log4j.properties文件中配置.
		log.debug("debug");
		log.error("error");
	}
	}
### set log levels ###
log4j.rootLogger = info,stdout ,  D ,  E
 
###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
 
### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =D:/logs/log.log
log4j.appender.D.DatePattern= _yyyy-MM-dd-HH'.log'
log4j.appender.D.Append = true
log4j.appender.D.Threshold = info
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
 
log.log(工程目录下)
log.log_2012-08-13.log——年--日
log.log_2012-08-14-18.log——年---时

总结:
DatePattern='_'yyyy-MM-dd'.log':每天滚动一次文件,即每天产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)'.'yyyy-MM: 每月
2)'.'yyyy-ww: 每周 
3)'.'yyyy-MM-dd: 每天
4)'.'yyyy-MM-dd-a: 每天两次
5)'.'yyyy-MM-dd-HH: 每小时
6)'.'yyyy-MM-dd-HH-mm: 每分钟

生成文件名有日期的文件

用log4j生成日志,担心天长日久如果生成到一个文件里面有很大,考虑每天都生成当天的日志文件,文件名有当天的日期。

但是在测试的时候怎么也出不来想要的类似“log.2012-07-24”这样的日志文件,老是只有一个"log.log"的文件,后来发现24日(今天)生成的日志是以”log“的形式存储的,当到25日(明天)的时候是把24日生成的log.log文件加入24日的日期(log.20120724)保存起来,然后在创建一个25日的log.log文件,依次类推。
所以在测试的时候需要修改系统时间才能看到生成的日志.

例如:我配置了log4j.appender.D.DatePattern=
_yyyy-MM-dd’.log’,以年-月-日来生成新的日志文件的配置时,12日的日志会存在log.log里边,等到13日再有新的日志时,就会生成一个log.log_2019-11-12.log新的日志文件(图中2019-11-12-18是因为之前设置的是yyyy-MM-dd-HH’.log),把13日的日志存到新的log.log里边

同理,如果我们把日期时间放宽,比如:log4j.appender.D.DatePattern=
_yyyy-MM-dd-HH’.log’,精确到年-月-日-时,就有图中log.log_2019-11-12-18.log,的效果

一些坑:
最好不要把日志时间设置太小,如果精确到分钟,跑一次程序十分钟的话,就会生成十个日志文件,这样查看起来很不友好

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值