log4net日志文件名中没有进程ID

5

我希望在我的日志文件名中包含进程ID信息,以便每次应用程序重新启动时都创建一个新的日志文件。我正在从两个项目记录到同一个文件中。这是我的配置:

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>

    <log4net>
        <appender name="NewLogForEveryRun" type="log4net.Appender.RollingFileAppender">
            <file value="c:\\testLogs\\TwoProjects-[%processid].txt" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d [%t] %-5p %c - %m%n" />
            </layout>
        </appender>

        <logger name="ClassLibrary1">
            <level value="ERROR" />
            <maximumFileSize value="256KB" />
            <param name="Threshold" value="ERROR"/>
            <appender-ref ref="NewLogForEveryRun" />
        </logger>

        <logger name="ClassLibrary2">
            <level value="ERROR" />
            <maximumFileSize value="256KB" />
            <param name="Threshold" value="ERROR"/>
            <appender-ref ref="NewLogForEveryRun" />
        </logger>
    </log4net>
</configuration>

我在提到%processid以获取日志文件名中的进程ID信息,但当应用程序运行时,它创建的日志文件名为TwoProjects-[%processid].txt。文件名中并未显示实际的进程ID。可能的原因是什么?

1个回答

15

默认情况下,除非您指定其包含一个模式,否则不会解析或处理文件值。

解决方案是更改该行。

<file value="c:\\testLogs\\TwoProjects-[%processid].txt" />

<file type="log4net.Util.PatternString" value="c:\\testLogs\\TwoProjects-[%processid].txt" />

没有成功。我的日志文件名仍然是"TwoProjects-[%processid].txt"。 - Sandeep
奇怪。我刚测试了一下,结果得到了TwoProjects-[12256].txt。 - sgmoore
1
问题已解决!我使用了一个较旧版本的log4net dll,导致了这个问题。 - Sandeep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接