web-dev-qa-db-ja.com

1日あたりのログがある

現在、私のアプリケーションはlog4netを使用してエラーをログに記録しています。このためのweb.configは次のとおりです。

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="c:/Paypal/logs/gateway.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
        </layout>
    </appender>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="FileAppender" />
    </root>
</log4net>

ただし、これに関する問題は、ログが常にgateway.logに移動することです

Log4netを使用して1日ごとに異なるログファイルを作成する方法を知っている人はいますか?

理想的には、スケジュールされたタスクを使用してweb.configを毎晩手動で編集する必要はありません。

38
swade1987

RollingFileAppender をrollingStyle DateおよびdatePattern yyyyMMddと共に使用する必要があります(毎日ロールします)。

構成の例:

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="c:/Paypal/logs/gateway.log" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
    </layout>
</appender>

更新:より良い方法は、日付をファイル名に含めることだと思います。また、datePattern値は、新しいログファイルをいつ作成するかを示すためにのみ使用します。

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="c:/Paypal/logs/gateway_%date{yyyyMMdd}.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
  </layout>
</appender>

この場合、すべてのファイルの名前はgateway_20120427.logのようになります。

79

RollingFileAppender を使用するような

<appender name="RollingLogFileAppenderOutput" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="c:\my.log" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd'.log'" />
    <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%date [%thread] %-5level - %message%newline" />
    </layout>
</appender>

編集

@lazyberezovskyが明確にするためにlog4netとrootを追加するだけで答えたのと同じように、これは毎日展開するためのlog4net構成セクション全体です。

edit2<file value="c:/Paypal/logs/gateway_" />これにより、「gateway_」という名前のファイルが作成され、1日の終わり(2012-04-27)にgateway_20120427.logに名前が変更され、翌日(2012-04-28)にファイルが再度作成されますgateway_そして最後にgateway_20120428.logを作成します。

<log4net> 
    <appender name="RollingLogFileAppenderOutput" type="log4net.Appender.RollingFileAppender">
        <file value="c:/Paypal/logs/gateway_" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value="yyyyMMdd'.log'" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level - %message%newline" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingLogFileAppenderOutput" />
    </root>
</log4net>
14
jjchiw

PreserveLogFileName

この設定は、ログをロールした後もファイルの拡張子を同じに保ちます。

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="c:/Paypal/logs/gateway.log" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value="_yyyyMMdd" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
        </layout>
        <preserveLogFileNameExtension value="true" />
    </appender>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="FileAppender" />
    </root>
</log4net>
8