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();
}
}