当前位置: 代码迷 >> C# >> 点滴积累【C#】-使用log4net组件记录异常日志(以文本形式记录)
  详细解决方案

点滴积累【C#】-使用log4net组件记录异常日志(以文本形式记录)

热度:58   发布时间:2016-05-05 04:23:54.0
点滴积累【C#】---使用log4net组件记录错误日志(以文本形式记录)

效果:

描述:

利用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&quot;.log&quot;"/>      <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="&#13;&#10;----------------------header--------------------------&#13;&#10;&#13;&#10;" />        <param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />      </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