1.配置文件(log4net.config)讀取:
在AssemblyInfo.cs 文件新加 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
2.配置文件(log4net.config):
<!--MySQL數據庫-->
<appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender">
<ConnectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>
<ConnectionString value="server=localhost;database=mysql;Uid=root;Pwd=password;port=3306;"/>
<!--Oracle數據庫--><!--
<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
--><!-- Oracle數據源 ,本地安裝Oracle客戶端--><!--
--><!--<connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />--><!--
--><!-- Oracle連接字符串--><!--
<connectionString value="Data Source=127.0.0.1;database=dcaddb;uid=root;pwd=root" />-->
<!--
Log4net默認數據表中有Datetime,Thread,Log_Level,Logger,Message這五個字段
數據庫表名Log
我們創建數據表時,可以根據自已需求
在這裏創建的Log表多加userid,username兩個字段
數據表自已提前在數據庫定義好
-->
<!--<commandText value="INSERT INTO log (RECORDDATE,USERNAME,USERIP,THREADID,LOGLEVEL,LOGGER,MESSAGE,EXCEPTIONINFO,UNITTYPE) VALUES (:recorddate, :username, :userip, :threadid, :loglevel, :logger, :message, :exceptioninfo,:unittype)" />-->
<commandText value="INSERT INTO log (RECORDDATE,USERNAME,USERIP,THREADID,LOGLEVEL,LOGGER,MESSAGE,EXCEPTIONINFO) VALUES (@recorddate, @username, @userip, @threadid, @loglevel, @logger, @message, @exceptioninfo)" />
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<!--自定義成員 -->
<parameter>
<parameterName value="@username" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%aspnet-cache{username}" /> //必須先存入內存中 : HttpContext.Current.Cache["username"] = %用戶名;
</layout>
</parameter>
<!--日誌級別限制-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
3.新建logUtil工具類(利用 log4net.dll 中的 ILog 初始化 自定義 Log4Net 類(info、warn、error、fatal、SaveMessage等方法))
=logUtil類==
public class LogUtil
{
private static ILog Log4Net;
public static void debug(string message,string exception)
{
if (Log4Net.IsDebugEnabled)
{
Log4Net.Debug(message, new Exception(exception));
}
}
public static void error(string message,string exception)
{
if (Log4Net.IsErrorEnabled)
{
Log4Net.Error(message, new Exception(exception));
}
}
public static void fatal(string message,string exception)
{
if (Log4Net.IsFatalEnabled)
{
Log4Net.Fatal(message, new Exception(exception));
}
}
public static void info(string message,string exception)
{
if (Log4Net.IsInfoEnabled)
{
Log4Net.Info(message, new Exception(exception));
}
}
public static void warn(string message,string exception)
{
if (Log4Net.IsWarnEnabled)
{
Log4Net.Warn(message, new Exception(exception));
}
}
/// <summary>
/// 需要寫日誌的地方調用此方法
/// </summary>
/// <param name="message">信息</param>
/// <param name="exception">異常</param>
/// <param name="level">日誌級別:1[一般] 2[警告] 3[錯誤] 4[嚴重]</param>
/// INFO(一般信息):記錄系統運行中應該讓用戶知道的基本信息。例如,服務開始運行,功能已經開戶等。
/// WARN(警告):記錄系統中不影響系統繼續運行,但不符合系統運行正常條件,有可能引起系統錯誤的信息。例如,記錄內容爲空,數據內容不正確等。
/// ERROR(一般錯誤):記錄系統中出現的導致系統不穩定,部分功能出現混亂或部分功能失效一類的錯誤。例如,數據字段爲空,數據操作不可完成,操作出現異常等。
/// FATAL(致命錯誤):記錄系統中出現的能使用系統完全失去功能,服務停止,系統崩潰等使系統無法繼續運行下去的錯誤。例如,數據庫無法連接,系統出現死循環。
/// DEBUG(調試信息):記錄系統用於調試的 一切信息,內容或者是一些關鍵數據內容的輸出。
/// <param name="logtype">日誌類別:1[登錄監控] 2[功能監控] 3[數據監控] 4[運行狀態]</param>
public static void SaveMessage(string message,string exception,int level,int logtype)
{
//從配置文件中讀取Logger對象
switch (logtype)//日誌類別:1[登錄監控] 2[功能監控] 3[數據監控] 4[運行狀態]
{
case 1:
{
Log4Net = log4net.LogManager.GetLogger("LoginRecordLog");
break;
}
case 2:
{
Log4Net = log4net.LogManager.GetLogger("FunctionRecordLog");
break;
}
case 3:
{
Log4Net = log4net.LogManager.GetLogger("DataRecordLog");
break;
}
case 4:
{
Log4Net = log4net.LogManager.GetLogger("RunningRecordLog");
break;
}
default:break;
}
switch (level) //日誌級別:1[一般] 2[警告] 3[錯誤] 4[嚴重]
{
case 1:
{
info(message, exception);
break;
}
case 2:
{
warn(message, exception);
break;
}
case 3:
{
error(message, exception);
break;
}
case 4:
{
fatal(message, exception);
break;
}
default:break;
}
}
/// <summary>
/// 用於單獨記錄資料下載情況的日誌
/// </summary>
/// <param name="message">日誌信息</param>
/// <param name="exception">可以爲空字符串</param>
public static void DownLoadMessage(string message,string exception)
{
Log4Net = log4net.LogManager.GetLogger("DownLoadLog");
if (Log4Net.IsDebugEnabled)
{
Log4Net.Debug(message, new Exception(exception));
}
}
}
4.業務邏輯中,利用 Log4Net.SaveMessage 方法 記錄日誌
//成功登入
LogUtil.SaveMessage("[" + model_user.Name +"("+model_user.UserCode+")]" + " 通過賬號驗證,成功登錄<數據彙集與分發系統>", "", 1, 1);
//失敗登入
LogUtil.SaveMessage("[" + model_user.Name + "(" + model_user.UserCode + ")]" + "通過賬號驗證失敗,未能成功登錄!", "", 2, 1);