1.1 本文只顯示需要修改配置的操作,初次引入log4net環境的請參考上文。
1.2 安裝mysql-connector-net.msi環境,下載地址。並手動生成數據庫日志信息表。
2.1 修改log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!-- Mysql日志類 -->
<logger name="logdb">
<level value="ALL" />
<appender-ref ref="AdoNetAppender_Mysql" />
</logger>
<!-- Mysql日志附加介質 -->
<appender name="AdoNetAppender_Mysql" type="log4net.Appender.AdoNetAppender">
<!-- 日志信息緩沖區大小,測試時為0,實際部署可適當改為100 -->
<bufferSize value="0" />
<!-- mysql-connector-net版本為6.8.3以上,不需更改數據源 -->
<ConnectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
<!-- 數據庫連接字符串 -->
<ConnectionString value="server=localhost;user id=root;password=root;persist security info=True;character set=utf8;database=test;pooling=true;"/>
<!-- 數據庫日志插入命令 -->
<commandText value="INSERT INTO loginfo (DateTime,Message,UserId) VALUES (@log_date, @message, @user_id)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<!-- 格式帶property為自定義信息 -->
<parameter>
<parameterName value="@user_id" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{UserId}" />
</layout>
</parameter>
</appender>
</log4net>
</configuration>
3.1 修改工具類LogHelper
namespace July.Demo.Win
{
public class LogHelper
{
static readonly log4net.ILog logdb = log4net.LogManager.GetLogger("logdb");
public static void WriteLog(string info)
{
if (logdb.IsInfoEnabled)
{
//使用線程相關屬性設定自定義信息
log4net.ThreadContext.Properties["UserId"] = "U-1001";
logdb.Info(info);
}
}
}
}
4.1 效果圖如下
周公的博客-log4net使用詳解:
blog.csdn.net/...3.aspx
蠻詳細的。
首先我們來分析一下Log4net的工作原理: Log4net是基於.NET開發的一款非常著名的記錄日志開源組件。它通過一套XML配置的日志引擎,將日志分不同的等級,分別是:FATAL 、 ERROR、 WARN、 INFO 、 DEBUG、ALL(允許所有的日志請求)和OFF(拒絕所有的日志請求),缺省為DEBUG,前五個可以看到和我們平常在調試應用程序的出錯有點類似,在編譯器中也會留下如錯誤、警告之類的提示信息,它們的錯誤級別不斷的降低。 我們接著看Log4net的核心組成部分,Log4net主要由五個部分組成,分別為Logger,Appenders, Filters, Layouts 和Object Renders。 1) Logger:主要負責日志的記錄,它記錄的方式有多種,可以是以文件、數據庫、控制台、郵件等多處方式; 2) Appenders:主要負責記錄日志介質的方式,它的輸出方式主要包括: AdoNetAppender:將日志記錄到數據庫中。可以采用SQL和存儲過程兩種方式。 AspNetTraceAppender:能用ASP.NET中跟蹤的方式查看記錄的日志。 BufferingForwardingAppender:在輸出到子Appenders之前先緩存日志事件。 ColoredConsoleAppender:在終端的窗口寫下高亮度的日志事件。 ConsoleAppender:將日志輸出到控制台。 EventLogAppender:將日志寫到Windows操作系統的日志中去。 FileAppender:將日志寫到文件中。 ForwardingAppender:用來為一個Appender指定一組約束。 MemoryAppender:將日志存到內存緩沖區。 NetSendAppender:將日志輸出到Windows Messenger service,這些日志信息將在用戶終端的對話框中顯示。 OutputDebugStringAppender:配置該Appender以向OutputDebugString API寫入日志。 RemotingAppender:通過.NET Remoting將日志寫到遠程接收端。 RollingFileAppender:將日志以回滾文件的形式寫到文件中。 SmtpAppender:將日志寫到郵件中。 SmtpPickupDirAppender:配置與SmtpAppender類似,但要把SmtpHost換為PickupDir。 TraceAppender:將日志寫到.NET trace 系統。 UdpAppender:將日志connectionless UDP datagrams的形式送到遠程宿主或以UdpClient的形式廣播。 以上有些輸出方式可能會經常用到,有些可能會不經常用到,具體我們在下面舉例來說明。 3) Layouts:主要負責把記錄日志格式化輸出,顯示得格式主要如下: %timestamp [%thread] %-5level %logger{2} %ndc - %message%newline timestamp: 表示程序已經開始執行的時間。 單位[毫秒]。 Thread:執行當前代碼的線程。 Level:日志的級別。 Logger:日志相關請求的名稱。