我正在使用ADO.NET Appender的log4net用於記錄錯誤和其他信息。到數據庫。我通常會看到連接字符串,sql查詢,參數都在配置中指定。使用sps在log4net中插入日誌信息
通過代碼可以做到這一點嗎?我在我的應用程序中有一個數據庫組件,所有與數據庫的交互都應該自己處理。每當我嘗試使用log4net記錄詳細信息時,我想調用數據庫組件中的日誌方法,該方法將調用SP將日誌信息記錄到數據庫中。我如何使用log4net來實現這一點?
我正在使用ADO.NET Appender的log4net用於記錄錯誤和其他信息。到數據庫。我通常會看到連接字符串,sql查詢,參數都在配置中指定。使用sps在log4net中插入日誌信息
通過代碼可以做到這一點嗎?我在我的應用程序中有一個數據庫組件,所有與數據庫的交互都應該自己處理。每當我嘗試使用log4net記錄詳細信息時,我想調用數據庫組件中的日誌方法,該方法將調用SP將日誌信息記錄到數據庫中。我如何使用log4net來實現這一點?
如果我正確理解你,你不希望log4net直接調用存儲過程。在這種情況下,你需要實現你自己的appender。我建議你下載log4net源代碼並查看現有的appender。
我會假設在這種情況下,你甚至不需要在代碼中配置appender。但是可以這樣做。如果你谷歌,你會發現很多這樣的例子:How to configure log4net programmatically from scratch (no config)
這是一個appender配置,我用它直接調用存儲過程。它不能調用你的DAL代碼,但它可以調用開箱即用的存儲過程。
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<threshold value="INFO" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=<your_server>;initial catalog=<database_name>;User ID=<user_id>;Password=<pwd>" />
<commandText value="dbo.spLogInsert" />
<commandType value="StoredProcedure" />
<parameter>
<parameterName value="@log_date_utc" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout">
<conversionPattern value="%utcdate" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_date_local" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout">
<conversionPattern value="%date" />
</layout>
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<parameter>
<parameterName value="@server" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{log4net:HostName}"/>
</layout>
</parameter>
</appender>