5

アプリケーションが再起動されるたびに新しいログファイルが作成されるように、ログファイル名にプロセスID情報を含めようとしています。2つのプロジェクトから同じファイルにログインしています。これは私の設定です。

<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>

ログファイル名でプロセスID情報を取得することに言及%processidしていますが、アプリケーションを実行すると、ログファイル名がとして作成されTwoProjects-[%processid].txtます。実際のプロセスIDはファイル名に表示されません。これの理由は何でしょうか?

4

1 に答える 1

15

デフォルトでは、パターンが含まれていると指定しない限り、ファイル値は解析または処理されません。

解決策は、行を変更することです

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

<file type="log4net.Util.PatternString" value="c:\\testLogs\\TwoProjects-[%processid].txt" />
于 2013-03-21T09:56:23.640 に答える