gpt4 book ai didi

log4net MemoryAppender 不工作

转载 作者:行者123 更新时间:2023-12-04 10:21:12 24 4
gpt4 key购买 nike

我正在使用 log4net 登录我的应用程序。我的 FileAppender 工作正常,但我遇到了 MemoryAppender 的问题。

这是我的配置文件。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="Envision.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">

</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="MemoryAppender" />
</root>
</log4net>
</configuration>

我使用此代码来设置配置文件。

FileInfo file = new FileInfo(configPath);
log4net.Config.XmlConfigurator.Configure(file);
file = null;

就像我说的,FileAppender 工作得很好。但我似乎无法得到任何事件。
我试过使用这样的东西来获取 MemoryAppender。

Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender mappender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender;

我试过使用:

var events = mappender.GetEvents()

记录一些东西后,事件总是空的。我尝试在代码中设置 FileAppender 和 MemoryAppender,而不是使用配置文件,我得到了相同的结果,FileAppender 工作正常,但似乎无法从 MemoryAppender 获取任何事件。想知道我是否理解 MemoryAppender 对吗?我还尝试设置一个循环检查 GetEvents 是否为空的线程,并且在注销时它总是返回为空。我试过在 MemoryAppender 上将 Threshold 设置为 Core.Level.All ,但这并没有改变任何东西。

感谢您的任何指导。我环顾四周,从我看过的网站来看,我无法分辨出我在做什么不同。

即使像这样简单的事情也行不通。事件长度始终为零;

public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();

MemoryAppender appender = new MemoryAppender();
ILog logger = LogManager.GetLogger("foo");
BasicConfigurator.Configure(appender);

logger.Error("Should work");
var events = appender.GetEvents();
}
}

最佳答案

对于那些需要它的人,以下是如何在 C# 中以编程方式进行操作:

var memoryAppender = new MemoryAppender();
var repository = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();
repository.Root.AddAppender(memoryAppender);
var events = memoryAppender.GetEvents();

关于log4net MemoryAppender 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com