You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium项目中Log4J日志文件添加时间戳失败求助

Log4J日志文件名添加时间戳失效的解决办法

你当前使用的是Log4J 1.x的RollingFileAppender,这个Appender仅支持按文件大小滚动日志,不支持在File参数中直接使用%d时间戳模式,这就是你配置后时间戳未生效的核心原因;另外FileNamePattern是Log4J 2.x的配置参数,在Log4J 1.x中完全不适用,所以这个配置也无效。

针对你的需求,提供两种可行方案:

方案一:使用DailyRollingFileAppender(按日期滚动日志)

如果需要按日期生成独立日志文件(比如每天一个app_logs_2023-05-15.log),直接替换为DailyRollingFileAppender即可,它原生支持日期格式的文件名滚动。修改后的日志配置如下:

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/app_logs.log
# 指定日期滚动的文件名格式,生成的归档文件会自动添加时间戳
log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=\[%3p\] %d \[%t\] %c %x - %m%n

# Direct log messages to stdout
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=\[%-p\] %d \[%t\] %c %x - %m%n

配置说明:

  • DatePattern='_'yyyy-MM-dd'.log':每天会将当天的日志归档为app_logs_2023-05-15.log,当前日志仍写入app_logs.log
  • MaxBackupIndex:控制保留的归档日志文件数量

方案二:保留RollingFileAppender,动态设置启动时间戳文件名

如果需要保留按文件大小滚动的逻辑,同时让文件名带上项目启动时的时间戳(比如app_logs_2023-05-15_14-30.log),需通过Java代码动态配置Log4J:

  1. 先在log4j配置中预留文件路径占位:
log4j.appender.file.File=logs/app_logs.log
  1. 在项目初始化代码中(比如Selenium测试的前置方法里),生成带时间戳的文件名并替换Log4J配置:
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import java.text.SimpleDateFormat;
import java.util.Date;

public class LogConfig {
    public static void initLogFileName() {
        Logger rootLogger = Logger.getRootLogger();
        FileAppender fileAppender = (FileAppender) rootLogger.getAppender("file");
        
        if (fileAppender != null) {
            String originalPath = fileAppender.getFile();
            String timestamp = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
            // 替换文件名,生成带时间戳的路径
            String newPath = originalPath.replace(".log", "_" + timestamp + ".log");
            fileAppender.setFile(newPath);
            fileAppender.activateOptions();
        }
    }
}

调用这个方法后,日志文件名将变为app_logs_2023-05-15.log,后续按文件大小滚动时,备份文件也会基于这个文件名生成。

内容的提问来源于stack exchange,提问作者Amarjeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:43:21