I try to instantiate a log4net rollingfile appender programmatically like this:
private void GetFileAppender(string appenderName)
{
// Get the logger repository hierarchy.
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
/// Set the pattern layout for this appender
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
patternLayout.ActivateOptions();
/// Instantiate a new file appender
this._fileAppender = new RollingFileAppender();
this._fileAppender.Name = appenderName + "FileAppender";
this._fileAppender.AppendToFile = true;
this._fileAppender.Layout = patternLayout;
this._fileAppender.File = "C:\\LogTest_";
this._fileAppender.StaticLogFileName = false;
this._fileAppender.DatePattern = "dd.MM.yyyy_hh'.log'";
this._fileAppender.RollingStyle = RollingFileAppender.RollingMode.Size;
this._fileAppender.MaximumFileSize = "10MB";
this._fileAppender.MaxSizeRollBackups = 10;
/// Define filter for this appender
LevelRangeFilter levelRangeFilter = new LevelRangeFilter { LevelMin = Level.Debug, LevelMax = Level.Fatal, AcceptOnMatch = true };
DenyAllFilter denyAllFilter = new log4net.Filter.DenyAllFilter();
this._fileAppender.AddFilter(levelRangeFilter);
this._fileAppender.AddFilter(denyAllFilter);
this._fileAppender.ActivateOptions();
hierarchy.Root.AddAppender(this._fileAppender);
hierarchy.Root.Level = Level.Debug;
hierarchy.Configured = true;
}
The logging itself works fine. The only problem i have is that the pattern for the file name doesnt work. I dont get the DateTime pattern and file extension for the log file defined by the DatePattern property. I just get the "LogTest_" as file name without the dateTime and extension.
How can this be solved? It forks if i configure it via XAML in my App.config. But i want to solve this programmatically.
SOLVED: The problem was that i had to set the RollingStyle to Composite
this._fileAppender.RollingStyle = RollingFileAppender.RollingMode.Composite;
By doing that it takes the patter defined by the property DatePattern.