Ich möchte den Namen meines Protokolls zur Laufzeit ändern, ohne den Appender zu ändern. Im Grunde, wenn es zu einer bestimmten Tageszeit kommt, würde ich gerne eine andere Datei verwenden können. DieseLog4net-Dateiname zur Laufzeit ändern, ohne den Appender zu ändern
ist, was meine appender wie folgt aussieht:
<appender name="info" type="log4net.Appender.RollingFileAppender">
<file value="logs\" />
<datePattern value="yyyyMMdd'_INFO.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline[%date]-%level-%logger[%M]- Linea:%L - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender>
Dies ist die Funktion, wo ich durch die Appenlaufen:
public void SetLogFile(string fileName)
{
foreach (var appender in log.Logger.Repository.GetAppenders())
{
try
{
((log4net.Appender.FileAppender)appender).File = fileName;
((log4net.Appender.FileAppender)appender).ActivateOptions();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
SetLogFile("log1.txt");
, die die folgende Datei für dieses spezielle Beispiel erstellt:
log1.txt20171221_INFO.log
Ich mag für meine Protokolldatei log1.txt
und nicht den datePattern
Satz in der log4net.config
Datei mit dem Namen verknüpft genannt werden, aber ich kann nicht herausfinden, wie es zu tun, ohne die log4net.config
appender Konfiguration zu ändern.