1。首先在webconfig裡面進行配置
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <priority value="ALL"/> <appender-ref ref="TraceAppender"/> <appender-ref ref="ConsoleAppender"/> <appender-ref ref="RollingLogFileAppender"/> </root> <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Log/log/" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value=".yyyyMMdd'.html'" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> </log4net>
2.然後建立一個Loghelper的類
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; using log4net; /// <summary> /// LogHelp 的摘要說明 /// </summary> public class LogHelp { public LogHelp() { // // TODO: 在此處添加建構函式邏輯 // }
private const string LOG_REPOSITORY = "Default"; // this should likely be set in the web config. private static ILog m_log; public static void Init() { log4net.Config.XmlConfigurator.Configure(); }
private static void DoLog(string message, LogMessageType messageType, Exception ex, Type type) { m_log = LogManager.GetLogger(type);
switch (messageType) { case LogMessageType.Debug: LogHelp.m_log.Debug(message, ex); break;
case LogMessageType.Info: LogHelp.m_log.Info(message, ex); break;
case LogMessageType.Warn: LogHelp.m_log.Warn(message, ex); break;
case LogMessageType.Error: LogHelp.m_log.Error(message, ex); break;
case LogMessageType.Fatal: LogHelp.m_log.Fatal(message, ex); break; } } /*記錄層級*/ public enum LogMessageType { /// <summary> /// 調試 /// </summary> Debug, /// <summary> /// 資訊 /// </summary> Info, /// <summary> /// 警告 /// </summary> Warn, /// <summary> /// 錯誤 /// </summary> Error, /// <summary> /// 致命錯誤 /// </summary> Fatal }
public static void Write(string message, LogMessageType messageType) { DoLog(message, messageType, null, Type.GetType("System.Object")); }
public static void Write(string message, LogMessageType messageType, Type type) { DoLog(message, messageType, null, type); }
public static void Write(string message, LogMessageType messageType, Exception ex) { DoLog(message, messageType, ex, Type.GetType("System.Object")); }
public static void Write(string message, LogMessageType messageType, Exception ex, Type type) { DoLog(message, messageType, ex, type); }
public static void Assert(bool condition, string message) { Assert(condition, message, Type.GetType("System.Object")); }
public static void Assert(bool condition, string message, Type type) { if (condition == false) Write(message, LogMessageType.Info); } } 3最後在global裡面寫入
<%@ Application Language="C#" %> <%@ Import Namespace="System.Diagnostics" %> <script runat="server">
void Application_Start(object sender, EventArgs e) { LogHelp.Init(); LogHelp.Write("網站程式運行...<br>",LogHelp.LogMessageType.Info, this.GetType()); } void Application_End(object sender, EventArgs e) { } void Application_Error(object sender, EventArgs e) { // 在出現未處理的錯誤時啟動並執行代碼 Exception err = Server.GetLastError();
if (err is Exception) { //StringBuilder sb = new StringBuilder();
//if (Request.IsLocal) // sb.AppendLine(err.Message.ToString()); //else // sb.AppendLine(string.Format("系統程式發生異常。<br />錯誤資訊:{0}", err)); //Server.ClearError(); //AppError.WriteError(AppError.ErrorType.Error, sb.ToString()); try { LogHelp.Write("Exception:", LogHelp.LogMessageType.Error, err, this.GetType()); } catch { //日誌寫入失敗。。。 } } }
void Session_Start(object sender, EventArgs e) { // 在新會話啟動時啟動並執行代碼 //Application.Lock(); //Application["count"] = Convert.ToInt32(Application["count"]) + 1; //SqlParameter[] param ={ new SqlParameter("@counter", Application["count"].ToString()) }; //string procName = "dbo.UpdateCounter"; //DataBase.ExecuteQuery(procName,param); //Application.UnLock(); }
void Session_End(object sender, EventArgs e) { // 在會話結束時啟動並執行代碼。 // 注意: 只有在 Web.config 檔案中的 sessionstate 模式設定為 // InProc 時,才會引發 Session_End 事件。如果會話模式設定為 StateServer // 或 SQLServer,則不會引發該事件。
} </script>