【问题标题】:Process Id not coming in log4net log file name进程 ID 没有出现在 log4net 日志文件名中
【发布时间】:2013-03-21 09:05:21
【问题描述】:

我试图在我的日志文件名中包含进程 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。这可能是什么原因?

【问题讨论】:

    标签: c# log4net


    【解决方案1】:

    默认情况下,您的文件值不会被解析或处理,除非您指定说它包含模式。

    解决办法是换行

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

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

    【讨论】:

    • 不走运。我的日志文件名仍然是“TwoProjects-[%processid].txt”。
    • 奇怪。我刚刚测试了它,我得到了 TwoProjects-[12256].txt
    • 已解决!我使用的是导致问题的旧版本的 log4net dll。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多