原來也一直用log4net記錄日誌,但是是在.net2.0 上用的。最近用到新的項目是vs2015開發的,要用log4net,今天將.net 4.0 使用log4net記錄錯誤記錄檔的步驟,分享給大家。
1、首先到http://logging.apache.org/log4net/download_log4net.cgi 下載最新版本的log4net。如果不需要修改log4net的原始碼的話,建議下載二進位的就可以了。最新版本是log4net 1.2.15。
IT分享
2、下載好log4net.dll檔案後,找到net4.0版本的dll檔案。拷貝到項目中根目錄下的自訂目錄lib檔案夾下,然後在項目中添加對該檔案的引用。
3、找到項目中Propertites目錄下的AssemblyInfo.cs檔案,在末尾添加一行調用設定檔的代碼如下:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Config\log4net.cfg.xml", Watch = true)]
4、建立設定檔夾Config,並添加一個log4net.cfg.xml檔案,設定檔內容如下:
注意:路徑別搞錯了,看清楚上面的圖~
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="Log/log.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]/r/n" />
<param name="Footer" value="[Footer]/r/n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<logger name="SLog4net.Form1">
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
</configuration>
5、建一個公用類,在裡面加上這樣的代碼:
public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
6、調用:
APManage.log.De<a href="http://www.suchso.com/programmer/chengxuyuan-duanzi-bug-shangwang.html" class="keylink" title=" Bug修複" target="_blank">bug</a>("系統啟動");
IT分享
7、記錄錯誤記錄檔:
web項目中添加全域處理檔案Global.asax。
protected void Application_Error(object sender, EventArgs e)
{
ErrorDeal();
}
private void ErrorDeal()
{
// 在出現未處理的錯誤時啟動並執行代碼
Exception ex = Server.GetLastError().GetBaseException();
StringBuilder str = new StringBuilder();
str.Append("\r\n" + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"));
str.Append("\r\n.客戶資訊:");
string ip = "";
if (Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR") != null)
{
ip = Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR").ToString().Trim();
}
else
{
ip = Request.ServerVariables.Get("Remote_Addr").ToString().Trim();
}
str.Append("\r\n\tIp:" + ip);
str.Append("\r\n\t<a href="projecteactual/web-server-browser-cache-1.html" class="keylink" title=" 瀏覽器的緩衝原理及緩衝方式" target="_blank">瀏覽器</a>:" + Request.Browser.Browser.ToString());
str.Append("\r\n\t瀏覽器版本:" + Request.Browser.MajorVersion.ToString());
str.Append("\r\n\t作業系統:" + Request.Browser.Platform.ToString());
str.Append("\r\n.錯誤資訊:");
str.Append("\r\n\t頁面:" + Request.Url.ToString());
str.Append("\r\n\t錯誤資訊:" + ex.Message);
str.Append("\r\n\t錯誤源:" + ex.Source);
str.Append("\r\n\t異常方法:" + ex.TargetSite);
str.Append("\r\n\t堆棧資訊:" + ex.StackTrace);
str.Append("\r\n--------------------------------------------------------------------------------------------------");
APManage.log.Error(str);
//處理完及時清理異常
Server.ClearError();
}