web-dev-qa-db-ja.com

ファイル名に日付を含むLog4netローリングデイリーファイル名

たとえば、次の名前のファイルを持ちたいです。

dd.mm.yyyy.log

Log4netでこれはどのように可能ですか?

113
JL.

Log4net構成ファイルで、RollingFileAppenderで次のパラメーターを使用します。

<param name="DatePattern" value="dd.MM.yyyy'.log'" />
97
Mun
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
191
Nonkichi

RollingLogFileAppenderの場合、次の要素と値も必要です。

<rollingStyle value="Date" />
<staticLogFileName value="false" />
29
BobD

Log4Net 1.2.13を使用して、ファイル名に日時を許可するために次の構成設定を使用します。

<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />

次の規則でファイルを提供します:logname-2015-04-17.txt

これでは、通常、1日に1つのログを保持するために次のものを用意するのが最善です。

<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />

ファイルのサイズが懸念される場合、次の例では、新しい日が出現するまで、サイズが5MBの500個のファイルを許可します。 CountDirection は、現在ではなくなったファイルの昇順または降順の番号付けを許可します。

 <maxSizeRollBackups value="500" />
 <maximumFileSize value="5MB" />
 <rollingStyle value="Composite" />
 <datePattern value="yyyyMMdd" />
 <CountDirection value="1"/>
 <staticLogFileName value="true" />
19
Jack Thorley

私は最終的に使用しました(「.log」ファイル名と「myfilename_」の前後の単一引用符に注意してください):

  <rollingStyle value="Date" />
  <datePattern value="'myfilename_'yyyy-MM-dd"/>
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />

これは私に与えます:

myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.
15
Njal

私はすべての答えを試しましたが、常に何かが欠けていて、期待どおりに機能していませんでした。

次に、各回答に示されたヒントを少し試し、次の設定で成功しました。

<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <preserveLogFileNameExtension value="true" />
  <datePattern value="-yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level - %message%newline" />
  </layout>
</appender>

パラメーターの他の組み合わせの問題は、最新のファイルに時間パターンがなかったこと、または時間パターンが.log20171215として追加され、新しいファイル時間(および新しいファイルの種類!)毎日-または両方の問題が発生しました。

この設定により、次のようなファイルを取得できます。

LOG4NET_Sample_Activity-20171215.log

それが私が欲しかったものです。


要約すると:

  • 日付パターンを<file value=...属性に入れないで、datePatternで定義してください。

  • preserveLogFileNameExtensionvalue属性がtrueに設定されていることを確認してください。

  • staticLogFileNamevaluefalseに設定されていることを確認してください。

  • rollingStyle属性valueDateに設定します。

8
Matt

ファイル拡張子を保持するには:

<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maximumFileSize value="30MB" />
      <staticLogFileName value="true" />
      <preserveLogFileNameExtension value="true"/>
      <datePattern value="ddMMyyyy" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>
5
Fourat

前の応答の拡張構成セクション

 ...
 ...
 <rollingStyle value="Composite" />
 ...
 ...

作品をリストしましたが、使用する必要はありませんでした

<staticLogFileName value="false" /> 

。定義上、アプリケーションが再起動/再利用されるとファイルが毎日再構築されるため、RollingAppenderはその設定を(論理的に)無視する必要があると思います。おそらく、アプリケーションが起動するたびに即座にロールオーバーすることが重要です。

0
AllenM