如何在运行时添加log4net appender?

19

我如何在运行时添加额外的日志记录器?(所有预先存在的日志记录器必须继续工作)
我尝试了以下方法:

        var layout = new PatternLayout("%utcdate %-5level - %message%newline");
        layout.ActivateOptions();
        _log4netAppender = new FileAppender
            {
                Layout = layout,
                File = logFilePath,
            };
        _log4netAppender.ActivateOptions();
        BasicConfigurator.Configure(_log4netAppender);

但它不会向文件写入任何内容。

2个回答

23

你还应该将这个appender添加到logger中。

请查看在程序中添加appender

如果你使用的logger是ILog logger,请执行以下操作:

((log4net.Repository.Hierarchy.Logger)logger.Logger).AddAppender(appender)


5
对我来说没有起作用。 我试图将日志输出到Nunit控制台,使用BasicConfigurator.Configure();解决了问题。 - Thomas

6
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接