前回の記事でASP.NETでログ出力を行う方法を説明しました。
その時はファイル出力だけだったのですが、VisualStudioで開発を行っている時には、デバッグコンソールに出力したい場合もあると思います。
普通のアプリケーションであれば、log4net.Appender.ConsoleAppenderを利用し、設定ファイルに
<configuration>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
</configuration>
と記述すればOKですが、ASP.NETの場合はすこし工夫が必要です。
それには、アペンダーの実装を簡素化するためのヘルパークラス、AppenderSkeletonを使います。
独自アペンダーを実装する
log4netにはAppenderSkeletonというクラスがあり、このクラスを継承すると、独自の振る舞いをさせるログ出力クラスを簡単に作成することができます。
では早速、独自クラスを作成します。
ASPConcoleAppenderという名前でクラスファイルを新規に追加してください。その後、AppenderSkeletonを継承させて、以下のように記述します。
using log4net.Core;
using log4net.Appender;
namespace SFDCService
{
public class ASPConcoleAppender: AppenderSkeleton
{
protected override void Append(LoggingEvent loggingEvent)
{
System.Diagnostics.Debug.WriteLine(loggingEvent.Level.Name, loggingEvent.RenderedMessage);
}
}
}
やっていることは、System.Diagnostics.Debug.WriteLineにログ出力を任せているだけです。
System.Diagnostics.Debug.WriteLineクラスは、デバッグ時に[出力]ペインに情報を書き出すクラスです。
独自アペンダーを使って出力するように設定する
独自のログ出力クラス(アペンダー)ができたら、それを使ってログ出力を行えるように、log4net.xml設定ファイルに設定を追加しましょう。
<configuration>
<log4net>
<appender name="ASPConcoleAppender" type="SFDCService.ASPConcoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ASPConcoleAppender" />
</root>
</log4net>
</configuration>
デバッグを実行すると、以下のように出力されました。
log4netでログ出力を行う設定一般については、前回記事にまとめていますので、参考にしてください。
aspxページ内(ASP.NET)でログ出力を行う方法(log4net編)