【发布时间】:2020-09-10 17:16:26
【问题描述】:
我正在尝试通过我的测试类中的代码向root 记录器添加一个自定义附加程序。我在一个名为Logging.cs 的包装类中配置了log4net。
这是我来自 Logging.cs 类的构造函数:
public Logging(Type type)
{
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead("log4net.config"));
var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
log4netLogger = LogManager.GetLogger(type);
LogManager.GetLogger(type);
}
在查看了一些示例后,我将其编码到我未完成的测试方法中:
[Fact]
public void TestOutput()
{
var appender = new StringAppender();
var logger = new Logging(typeof(TestLibrary));
Hierarchy h = (Hierarchy)log4net.LogManager.GetRepository();
Logger rootLogger = h.Root;
}
但是,GetRepository() 需要一个作为 string 的回购名称,我不确定,而且总的来说我不知道我是否走在正确的道路上。
这是自定义附加程序:
public class StringAppender : AppenderSkeleton
{
private string message { get; set; }
protected override void Append(LoggingEvent loggingEvent)
{
message = loggingEvent.RenderedMessage;
}
public string GetMessage()
{
return message;
}
}
【问题讨论】:
标签: asp.net-core log4net