回答:
Log4net構成ファイルで、RollingFileAppenderで次のパラメーターを使用します。
<param name="DatePattern" value="dd.MM.yyyy'.log'" />
<preserveLogFileNameExtension value="true" />
は正しい構文であり、これは素晴らしい答えです。損失はどのように発生しましたか?
<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>
RollingLogFileAppenderの場合は、次の要素と値も必要です。
<rollingStyle value="Date" />
<staticLogFileName value="false" />
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" />
私は最終的に使用しました( '.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
.
.
preserveLogFileNameExtension
ここで
私はすべての答えを試しましたが、何かが欠けていて、期待どおりに機能していませんでした。
次に、各回答で与えられたヒントを少し試し、次の設定で成功しました:
<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
です。
preserveLogFileNameExtension
value属性がに設定されていることを確認してくださいtrue
。
staticLogFileName
値がに設定されていることを確認してくださいfalse
。
rollingStyle
属性値をに設定しますDate
。
ファイル拡張子を保持するには:
<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>
%date{yyyyMM}
とvalue="ddMMyyyy"
?有効な日付パターンはどれですか?
以前の応答の拡張構成セクション
...
...
<rollingStyle value="Composite" />
...
...
リストされた作品ですが、使用する必要はありませんでした
<staticLogFileName value="false" />
。アプリケーションが再起動/再利用されるとファイルが毎日再構築されるため、RollingAppenderはその設定を(論理的に)無視する必要があると思います。おそらく、アプリケーションが起動するたびに即座にロールオーバーすることが重要です。
システム変数を使用してCIから簡単に変更できるように、構成をコードに移動しました。このコードをファイル名に使用すると、結果は「Log_03-23-2020.log」になります。
log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(Assembly.GetEntryAssembly());
Hierarchy hierarchy = (Hierarchy)repository;
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date %level - %message%newline%exception";
patternLayout.ActivateOptions();
RollingFileAppender roller = new RollingFileAppender();
roller.AppendToFile = true;
roller.File = "Log_";
roller.DatePattern = "MM-dd-yyyy'.log'";
roller.Layout = patternLayout;
roller.MaxFileSize = 1024*1024*10;
roller.MaxSizeRollBackups = 10;
roller.StaticLogFileName = false;
roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
roller.ActivateOptions();
hierarchy.Root.AddAppender(roller);