程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 點滴積累【C#】---使用log4net組件記錄錯誤日志(以文本形式記錄),

點滴積累【C#】---使用log4net組件記錄錯誤日志(以文本形式記錄),

編輯:C#入門知識

點滴積累【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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved