Log4的一些基本用法

来源:互联网 发布:java string首字母大写 编辑:程序博客网 时间:2024/06/10 00:26

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>

原创粉丝点击