Я использую 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 не был пустым, и при выходе из системы он всегда возвращается пустым.Я попытался установить порог для Core.Level.All в MemoryAppender, но это ничего не изменило.
Спасибо за любое направление.Я посмотрел вокруг, и с сайтов, которые я видел, я не могу сказать, что я делаю по-другому.
Даже что-то столь простое, как это, не работает.длина событий всегда равна нулю;
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();
}
}