log4netを使用してログを出力するには、設定を作成する必要があります。
設定は、プロジェクトファイルのApp.config に組み込むか、任意のXMLファイルを準備するかのどちらかとなります。
設定値の保存場所を設定する
log4netは最初にAssemblyInfovb(C#の場合はAssemblyInfo.cs)を参照し、ログ出力に必要な設定値が保存されている場所を読み取ります。
設定値の保存場所は、App.configまたは任意のXMLファイルを指定することが可能です。
AssemblyInfo.vb(C#はAssemblyInfo.cs)の最終行に以下のコードを追加します。
VB.NETのAssemblyInfo.vbへの追記(App.configを使用する場合)
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>
VB.NETのAssemblyInfo.vbへの追記(任意のXMLファイルを使用する場合)
<Assembly: log4net.Config.XmlConfigurator(Watch:=True, ConfigFile:="XMLファイルのパス")>
C#のAssemblyInfo.csへの追記(App.configを使用する場合)
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
C#のAssemblyInfo.csへの追記(任意のXMLファイルを使用する場合)
[assembly: log4net.Config.XmlConfigurator(Watch=true, ConfigFile="XMLファイルのパス")]
設定を作成する
設定ファイルには、ログをどのように出力するかを記述します。
最初に、App.configにある~を以下のように編集し、log4netの設定を セクションに書くことを宣言しておきます。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> </configuration>
次に、ログの出力形態(どこに出力するか)を記述します。
ログの出力形態は、下表のように複数の種類があり、アペンダと呼ばれるログ出力用クラスを指定して設定します。
(代表的なもののみを掲載しています。詳しくは、http://logging.apache.org/log4net/release/config-examples.html を参照ください)
アペンダ | 出力形態 |
log4net.Appender.AdoNetAppender | データベース(ADO.NETを使用) |
log4net.Appender.ConsoleAppender | コンソール |
log4net.Appender.ColoredConsoleAppender | コンソール(エラーレベルごとに色を指定できる) |
log4net.Appender.EventLogAppender | イベント・ログ |
log4net.Appender.FileAppender | ファイル |
log4net.Appender.NetSendAppender | NetSendコマンドで、Windowsユーザーへ送付 |
log4net.Appender.RollingFileAppender | ファイル(ファイルの最大値で、ログファイルを分割出力) |
log4net.Appender.SmtpAppender | メール |
log4net.Appender.TraceAppender | トレース情報として生成 |
アペンダは、App.configのセクション内のセクションに記述します(複数記述することも可能です)。
コンソールにログを出力する例でみてみましょう。
のname属性には任意の名前を記述します。
type属性には上記表のログ出力クラス(ここではlog4net.Config.Log4NetConfigurationSectionHandler,log4net)を指定します。
はログの出力書式を設定するセクションです。
のvalue属性に、ログの出力書式を記述します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <!-- コンソールにログを出力する設定の例 --> <appender name="LogToConsole" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d[%t] %p - %m%n"/> </layout> </appender> </log4net> </configuration>
ログの出力書式
のvalue属性で指定できる代表的な値には以下のようなものがあります。
(そのほかの値については http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html を参照ください)
値 | 説明 |
%d | ログ日時の出力 |
%L | 行番号の出力 |
%m | メッセージを出力 |
%n | 改行文字の出力 |
%p | ログレベルの出力 |
%t | ログを生成したスレッドの出力 |
%M | ログを出力したメソッド名 |
%logger | ログクラスのGetLoggerメソッドの引数に渡した値 |
ログレベルの設定
出力するログは、ログレベルを設定することができます。
ログレベルには、下表のものがあります。
レベル | 説明 |
Fatal | システムを停止するような致命的なエラー |
Error | システム停止までいかないが、問題となるエラー |
Warn | 注意や警告 |
Info | 操作ログ情報 |
Debug | 開発用デバッグ情報 |
ログレベルを設定すると、指定したログレベルより上のものが出力されます。
たとえば、ログレベルに Warnを指定した場合には、表のWarn以上のログのみ(Warn, Error, Fatalの3種類)出力します。
また、レベルには All と OFFというものもあり、 Allを指定した場合には、すべてのレベルのログを出力します。Offを指定した場合には一切ログを出力しません。
ログレベルは セクションのセクション内に記述します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <!-- コンソールにログを出力する設定の例 --> <appender name="LogToConsole" type="log4net.Appender.ConsoleAppender"> :省略 </appender> <root> <!-- 警告以上のログを出力したい場合 --> <level value="Warn" /> </root> </log4net> </configuration>
使用するアペンダーの設定
最後に、どのアペンダを使用するかを指定する必要があります。
使用するアペンダは、先ほどのセクション内に記述します。
ref属性には、アペンダに付けた名前を指定します。
<root> <!-- 警告以上のログを出力したい場合 --> <level value="Warn" /> <!-- 使用するアペンダを設定 --> <appender-ref ref="LogToConsole" /> </root>
上記をまとめた App.configの例を以下に記します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <!-- コンソールを使用するAppenderの例 --> <appender name="LogToConsole" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d[%t] %p - %m%n"/> </layout> </appender> <root> <!-- 警告以上のログを出力したい場合 --> <level value="Warn" /> <!-- どのログ出力先を使用するか --> <appender-ref ref="LogToConsole" /> </root> </log4net> </configuration>
コメント