log4j2如何选择会话而不是日期

问题描述

在log4j2上,我可以根据日期轻松地按以下行记录到文件

<File name="file" fileName="logs/te_${date:yyyy}-${date:MM}-${date:dd}_output.log" append="true">

在某些行业中,存在整个午夜的会议概念
说电影,在某些国家/地区,电影会在午夜之后开始。
因此,我希望将日志捕获为在4AM结束/开始的会话。

在一天中任何时候启动程序的地方都会检查:

// pseudo code
if time < 04:00 then
    session = today.minusDays(1)
else 
    session = today

因此,为了清楚起见,程序启动时的日志文件名称如下:

# starting datetime |  logfile name
2020-05-20 22:00 -> "2020-05-20_output.log"
2020-05-21 01:00 -> "2020-05-20_output.log"
2020-05-21 03:00 -> "2020-05-20_output.log"
2020-05-21 05:00 -> "2020-05-21_output.log"

我可以在log4j2.xml文件上执行此操作吗?

解决方法

如果不清楚,您想在凌晨4点发生什么。听起来您想开始写入其他文件。如果是这样,您想将RollingFileAppender与CronTriggeringPolicy一起使用。

Getting restore information for project /Users/admin/Desktop/Development/MyProjectApp/MyProject/MyProject.Android/MyProject.Android.csproj