たとえば、次のような名前のファイルが必要です。
dd.mm.yyyy.log
log4netでこれはどのように可能ですか?
<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>
Log4net 構成ファイルで、RollingFileAppender で次のパラメーターを使用します。
<param name="DatePattern" value="dd.MM.yyyy'.log'" />
RollingLogFileAppender の場合、次の要素と値も必要です。
<rollingStyle value="Date" />
<staticLogFileName value="false" />
システム変数を使用して 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);
以前の応答の拡張構成セクション
...
...
<rollingStyle value="Composite" />
...
...
リストされた作品ですが、使用する必要はありませんでした
<staticLogFileName value="false" />
. RollingAppender はその設定を (論理的に) 無視する必要があると思います。定義上、アプリケーションが再起動/再利用されるたびにファイルが再構築されるからです。おそらく、アプリケーションが起動するたびに即座にロールオーバーすることは重要です。