How to add log4net appender in runtime?
24,078
Solution 1
You should also add the appender to a logger. Take a look here Adding Appenders programmatically
If the logger you are using is, for example ILog logger
do:
((log4net.Repository.Hierarchy.Logger)logger.Logger).AddAppender(appender)
Solution 2
var patternLayout = new log4net.Layout.PatternLayout
{
ConversionPattern = "%date %level %message%newline"
};
patternLayout.ActivateOptions();
var rollingFileAppender = new log4net.Appender.RollingFileAppender
{
File = "MyApp.log",
Layout = patternLayout
};
rollingFileAppender.ActivateOptions();
var hierarchy = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();
hierarchy.Root.AddAppender(rollingFileAppender);
hierarchy.Root.Level = log4net.Core.Level.All; // Default is Debug
log4net.Config.BasicConfigurator.Configure(hierarchy);
Related videos on Youtube
Author by
Steve Kero
Updated on July 09, 2022Comments
-
Steve Kero almost 2 years
How do I add an extra log appender in runtime? (all pre-existing appenders must keep on working)
I'm trying it this way:var layout = new PatternLayout("%utcdate %-5level - %message%newline"); layout.ActivateOptions(); _log4netAppender = new FileAppender { Layout = layout, File = logFilePath, }; _log4netAppender.ActivateOptions(); BasicConfigurator.Configure(_log4netAppender);
but it doesn't write anything to the file.
-
Thomas almost 7 yearsIt didn't work for me. I was trying to output logs to Nunit console and
BasicConfigurator.Configure();
did the trick.