基于log4rs YAML配置为日志文件名添加当前日期的问题
解决log4rs配置中日志文件名添加日期的问题
你遇到的问题根源在于使用了file类型的appender,它不支持解析路径中的日期占位符。要实现带日期的每日滚动日志文件,必须改用rolling_file类型的appender,并配置正确的滚动策略与文件名模式。
修改后的YAML配置如下:
refresh_rate: 600 seconds appenders: stdout: kind: console encoder: pattern: "{d(%Y-%m-%d %H:%M:%S)(utc)} - | {h({l}):5} | {f}:{L} — {m}{n}" file_logger: kind: rolling_file filename_pattern: "logs/Application.%Y-%m-%d.log" encoder: pattern: "{d(%Y-%m-%d %H:%M:%S)(utc)} - | {h({l}):5} | {f}:{L} — {m}{n}" policy: kind: time pattern: "%Y-%m-%d" base: "midnight" offset: 0 max_files: 7 root: level: info appenders: - stdout - file_logger
关键说明:
- 替换
file为rolling_file类型,这是log4rs中支持滚动日志与文件名模式解析的专属appender。 filename_pattern字段支持标准日期格式化占位符,%Y-%m-%d会自动替换为当前的年-月-日,生成你需要的logs/Application.2023-01-04.log格式文件名。- 配置
time类型的滚动策略,设置base: "midnight"可实现每日午夜自动生成新的日志文件,max_files用于指定保留的历史日志文件数量。 - 若不需要单独的活动日志文件(始终直接写入带日期的文件),无需配置
path字段,仅保留filename_pattern即可。
如果需要同时按文件大小和时间双条件滚动,可改用复合策略配置:
policy: kind: compound trigger: kind: size limit: 100mb roller: kind: time pattern: "%Y-%m-%d" base: "midnight" offset: 0 max_files: 7
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

