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