效果:

描述:
利用log4net組件進行錯誤日志的記錄,log4net記錄錯誤的方式我所了解的有4種,No.1 文本形式記錄日志,No.2存儲到數據庫形式記錄日志,No.3控制台控制顯示日志,No.4Windows事件日志。本文所采用的是第一種形式------文本形式記錄日志。
首先,引用log4net.dll文件,然後創建一個config文件,進行配置日志的相關信息,比如:配置路徑,以及錯誤的顯示形式等。然後創建一個Global.asax應用程序文件,用於第一次訪問時執行配置文件。然後創建一個類,進行錯誤日志的整理,然後調用這個類進行寫入日志。
代碼:
配置文件(log.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<!--文件形式記錄日志-->
<appender-ref ref="RollingLogFileAppender" />
</root>
<!--輸出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--保存路徑-->
<file value="log\\Log-" />
<!--是否續寫-->
<appendToFile value="true" />
<!--按照文件的大小進行變換日志文件-->
<rollingStyle value="Date" />
<!--保留的log文件數量 超過此數量後 自動刪除之前的 好像只有在 按Size分割時有效-->
<param name="MaxSizeRollBackups" value="100"/>
<param name="StaticLogFileName" value="false"/>
<param name="DatePattern" value="yyyy-MM-dd".log""/>
<encoding value="utf-8" />
<!--最小鎖定模型以允許多個進程可以寫入同一個文件-->
<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
<!--
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
-->
<layout type="log4net.Layout.PatternLayout">
<param name="conversionPattern" value="時間:%d%n線程:[%t]%n類型:%-5p%n標題:%c%n內容:%m%n——————————%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
</log4net>
</configuration>
應用程序(Global.asax)
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~") + @"\log.config"));
}
處理日志(logHelper.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace log4net_Write
{
public class logHelper
{
/// <summary>
/// 生成日志信息——Fatal(致命錯誤)
/// </summary>
/// <param name="message">日志內容</param>
public static void Fatal(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Fatal");
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Fatal(致命錯誤)
/// </summary>
/// <param name="name">名稱</param>
/// <param name="message">日志內容</param>
public static void Fatal(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Error(一般錯誤)
/// </summary>
/// <param name="message">日志內容</param>
public static void Error(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Error");
if (log.IsErrorEnabled)
{
log.Error(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Error(一般錯誤)
/// </summary>
/// <param name="name">名稱</param>
/// <param name="message">日志內容</param>
public static void Error(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsErrorEnabled)
{
log.Error(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Warn(警告)
/// </summary>
/// <param name="message">日志內容</param>
public static void Warn(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Warn");
if (log.IsWarnEnabled)
{
log.Warn(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Warn(警告)
/// </summary>
/// <param name="name">名稱</param>
/// <param name="message">日志內容</param>
public static void Warn(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsWarnEnabled)
{
log.Warn(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Info(一般信息)
/// </summary>
/// <param name="message">日志內容</param>
public static void Info(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Info");
if (log.IsInfoEnabled)
{
log.Info(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Info(一般信息)
/// </summary>
/// <param name="name">名稱</param>
/// <param name="message">日志內容</param>
public static void Info(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsInfoEnabled)
{
log.Info(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Debug(調試信息)
/// </summary>
/// <param name="message">日志內容</param>
public static void Debug(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Debug");
if (log.IsDebugEnabled)
{
log.Debug(message);
}
log = null;
}
/// <summary>
/// 生成日志信息——Debug(調試信息)
/// </summary>
/// <param name="name">名稱</param>
/// <param name="message">日志內容</param>
public static void Debug(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsDebugEnabled)
{
log.Debug(message);
}
log = null;
}
}
}
調用
protected void btn_Click(object sender, EventArgs e)
{
try
{
int intStr = Convert.ToInt32(tb.Text);
tb2.Text = "轉換成功:" + intStr.ToString();
}
catch (Exception ex)
{
//logHelper.Error(ex.ToString());
//logHelper.Debug(ex.ToString());
//logHelper.Fatal(ex.ToString());
//logHelper.Info(ex.ToString());
logHelper.Warn("warn名稱", ex.ToString());
}
}
Demo下載:
http://files.cnblogs.com/files/xinchun/GetLog2.zip