3

これは、スタック オーバーフローに関する私の最初の質問です。Googleまたはstackoverflowで答えを見つけることができませんでした。

nunit テストで log4net を調べてログ内の特定のエントリを調べ、その検索結果に基づいてアサートすることに興味があります。

私が読んだ無関係の投稿に基づいて:log4net、おそらくMemoryAppenderを使用して、GetEventsメソッドを介してこれを行い、返されたイベントの配列を熟読できると思います。

しかし、私は疑問に思っています: 1. 誰かがこれをやったことがありますか? 落とし穴や提案はありますか?代替アプローチはありますか?2. 提示できるレシピはありますか?

ありがとう。

4

1 に答える 1

3

わかりました、私自身の質問に答えます (というか、私の同僚はベスに感謝します)。

log4net: config の構成:

<log4net>
     <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender" />
     <root>
     <level value="DEBUG" />
     <appender-ref ref="MemoryAppender" />
     </root>
</log4net>

.net コードで:

List<string> messages = new List<string>();
Hierarchy hierarchy = LogManager.GetLoggerRepository() as Hierarchy;
MemoryAppender appender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender;
LoggingEvent[] eventList = appender.GetEvents();

foreach (LoggingEvent item in eventList)
   messages.Add(item.RenderedMessage);

return messages.ToArray();

メッセージ配列を取得したら、必要なことを行います。

これは、既存のログ ファイルがあり、それを検索したい場合には対処できません。

于 2010-01-22T18:04:00.837 に答える