log4netのAdoNetAppenderを使って、初めてSQL Serverにログを書き出してみました。
SQL Serverへのログ出力は、
- 設定情報に接続情報を記載する。
- ログテーブルにあわせたInsert文を記載する。可変項目(要するに各カラム、フィールド)の内容は、@で始まるパラメータとして記述する。
- 各パラメーターに具体的にどのような情報を設定するかを定義する。
というステップで設定します。Appender部分の定義例はこんな感じ。
<appender name="DbLog" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=192.168.0.11;initial catalog=TESTDB;integrated security=false;persist security info=True;User ID=sa;Password=sa_pass" />
<commandText value="INSERT INTO ErrTbl ([PROCESS],[PROGRAM],[STATUS],[METHOD],[MESSAGE],[STACKTRACE]) VALUES (@process, @program, @status, @method, @message, @stack_trace)" />
<parameter>
<parameterName value="@process" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%appdomain" />
</layout>
</parameter>
<parameter>
<parameterName value="@program" />
<dbType value="String" />
<size value="30" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%type" />
</layout>
</parameter>
<parameter>
<parameterName value="@status" />
<dbType value="String" />
<size value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@method" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%method" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@stack_trace" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception" />
</layout>
</parameter>
</appender>「ConnectionType」は固定のようです。log4netが利用しているドライバ情報になっているのかな?
「conversionPattern」タグに記載する、log4netが持っている情報についてはここを見るとわかります。ざっくりですが。
- log4net - PatternLayout Class
- https://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html