THWS_Process1234_debug_20181102.log
<appender name="DebugLogAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\THHWS_Process%processid_debug_.log"/>
<staticLogFileName value="false"/>
<datePattern value="yyyyMMdd"/>
<preserveLogFileNameExtension value="true"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="100MB"/>
<rollingStyle value="Composite"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss.fff} | %thread | %-5level | %logger | %message%newline"/>
</layout>
</appender>
我有两种日志,审计和调试。当我有一个问题要调查时,我希望两个相关的日志文件(用于审计和调试)具有相同的根文件名,以便按文件名排序,这两个文件相邻出现。所以我想生成如下的日志文件名:
THHWS_20181102_Process1234_audit.log
THHWS_20181102_Process1234_debug.log
THHWS_20181102_Process9876_audit.log
THHWS_20181102_Process9876_debug.log
我想在web.config中配置文件名,而不必使用代码。是否可以通过web.config文件生成日期早于进程ID的文件名?
我试过的
1) 将进程ID添加到datePattern:
...
<file value="C:\Logs\THHWS_.log"/>
...
<datePattern value="yyyyMMdd_Process%processid_debug"/>
...
这导致文件名如下
THHWS_20181102_Proce33proce33i2_2ebuA.D..log
,我假设是因为它认为“s”表示“second”,而“d”和“g”表示.NET日期时间模式。
<datePattern value="yyyyMMdd_Proce\s\s%proce\s\si\d_\debu\g"/>
这让我更亲近:
THHWS_20181102_Processprocessid_debug.log
但是,有没有办法在日期之后包含进程ID?
<appender name="DebugLogAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\Logs\THHWS_%date{yyyyMMdd}_Process%processid_debug.log"/>
<staticLogFileName value="false"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="100MB"/>
<rollingStyle value="Composite"/>
...
</appender>
THHWS_20181102_Process20220_debug.log.2018-11-02
<rollingStyle value="Size"/>
这将产生正确的文件名:
THHWS_20181102_Process22180_debug.log
但是,它不会在日期更改时滚动文件名。