如何配置Log4j生成function_YYYYMMDDH24MI-record.log格式日志文件?
配置Log4j生成指定格式的日志文件名
没问题,完全可以实现你想要的function_YYYYMMDDH24MI-record.log格式日志文件名,这里给你两种可行的方案,根据你的依赖情况来选:
方案1:用原生DailyRollingFileAppender(无需额外依赖)
如果你不想引入新的依赖包,可以调整现有DailyRollingFileAppender的参数来实现。原生的DailyRollingFileAppender会把DatePattern的值直接追加到File参数指定的路径后面,作为滚动后的文件名。
你只需要修改File和DatePattern的配置即可,调整后的完整配置如下:
<appender name="function" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${catalina.base}/logs/function_" /> <param name="DatePattern" value="yyyyMMddHHmm-record.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %c{1}:%L - %m%n" /> </layout> </appender>
注意点:
- 初始写入的日志文件会是
function_(没有.log后缀),但当到达滚动时间点(因为你用了yyyyMMddHHmm,也就是每分钟滚动一次),这个文件会被重命名为function_YYYYMMDDHHmm-record.log,同时会新建一个function_文件继续写入。如果能接受初始文件的临时状态,这个方案完全够用。
方案2:用Log4j Extras的TimeBasedRollingPolicy(推荐,更灵活)
如果想要初始文件也严格符合目标格式,推荐使用Log4j的扩展组件log4j-extras,它提供的TimeBasedRollingPolicy可以精准控制日志文件名的格式,没有方案1的临时文件问题。
步骤1:引入依赖(如果用Maven)
首先确保项目中添加了log4j-extras的依赖:
<dependency> <groupId>log4j</groupId> <artifactId>log4j-extras</artifactId> <version>1.2.17</version> </dependency>
步骤2:修改log4j.xml配置
替换原来的DailyRollingFileAppender为带滚动策略的RollingFileAppender:
<appender name="function" class="org.apache.log4j.rolling.RollingFileAppender"> <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> <!-- 这里直接指定你想要的完整文件名格式 --> <param name="FileNamePattern" value="${catalina.base}/logs/function_%d{yyyyMMddHHmm}-record.log" /> <!-- 可选配置:设置日志文件的保留天数,比如保留30天 --> <param name="MaxHistory" value="30" /> </rollingPolicy> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %c{1}:%L - %m%n" /> </layout> </appender>
这个方案下,所有生成的日志文件都会严格遵循function_YYYYMMDDHHmm-record.log的格式,包括初始写入的文件,滚动时也会自动生成新的时间戳文件名,体验更顺畅。
内容的提问来源于stack exchange,提问作者user6751235
相关产品推荐
相关产品推荐

