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);
Share:
24,078

Related videos on Youtube

Steve Kero
Author by

Steve Kero

Updated on July 09, 2022

Comments

  • Steve Kero
    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
    Thomas almost 7 years
    It didn't work for me. I was trying to output logs to Nunit console and BasicConfigurator.Configure(); did the trick.