国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Log4Net 日志配置[附帶源碼]

2019-11-17 02:03:22
字體:
來源:轉載
供稿:網友

Log4Net 日志配置[附帶源碼]

前述

  園子里有許多人對log4net這款開源的日志記錄控件有很多介紹。在這里個人再做一次總結,希望對以后有所幫助,需要的時候可以直接使用,減少查閱資料的時間。利用log4net可以方便地將日志信息記錄到文件、控制臺、Windows事件日志和數據庫,并且我們還可以記載控制要記載的日志級別,可以記載的日志類別包括:FATAL(致命錯誤)、ERROR(一般錯誤)、WARN(警告)、INFO(一般信息)、DEBUG(調試信息)。log4net有四種主要的組件,分別是Logger(記錄器), Repository(庫), Appender(附著器)以及Layout(布局).

準備工作:

1.下載log4net.dll 下載地址[http://logging.apache.org/log4net/download_log4net.cgi]

下載文件:log4net-1.2.13-bin-newkey.zip。 解壓選擇對應的net版本找到log4net.dll。

2.在項目中引用log4net.dll。

實例代碼

準備工作完成后我們來看下實例代碼 ,首先在項目中創建一個文件夾LogConfig。把有關log4net的一些配置文件和類都放在這個文件夾里面。

WEB網站為例,在項目LogConfig文件夾中創建Log4Net.config配置文件。

<?xml version="1.0" encoding="utf-8"?><configuration>  <configSections>    <!--添加自定義節點:log4net  type:解析類名,程序集名(log4net.dll)-->    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>  </configSections>  <log4net>    <!--定義輸出到文件中-->    <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">      <!--定義文件存放位置-->      <file value="C:/log4net/"/>      <!--是否追加到文件,默認為true,通常無需設置-->      <appendToFile value="true"/>      <RollingStyle value="Date"/>      <!--日期的格式,每天換一個文件記錄,如不設置則永遠只記錄一天的日志,需設置-->      <DatePattern value="INFO_yyyyMMdd&quot;.log&quot;" />      <!--日志文件名是否為靜態-->      <StaticLogFileName value="false"/>      <!--多線程時采用最小鎖定-->      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />      <!--布局(向用戶顯示最后經過格式化的輸出信息)-->      <layout type="log4net.Layout.PatternLayout">        <!--           %m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息            %n(new line):換行            %d(datetime):輸出當前語句運行的時刻            %r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數            %t(thread id):當前語句所在的線程ID            %p(PRiority): 日志的當前優先級別,即DEBUG、INFO、WARN…等            %c(class):當前日志對象的名稱,例如:           %L:輸出語句所在的行號            %F:輸出語句所在的文件名            %-數字:表示該項的最小長度,如果不夠,則用空格填充          -->        <Header value="[Header]&#13;&#10;"/>        <Footer value="[Footer]&#13;&#10;"/>        <!--正文-->        <ConversionPattern value="記錄時間:%date 線程ID:[%thread] 日志級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"  />      </layout>    </appender>    <appender name="Log4Net_ERROR" type="log4net.Appender.RollingFileAppender">      <file value="C:/log4net/"/>      <appendToFile value="true"/>      <RollingStyle value="Date"/>      <DatePattern value="ERROR_yyyyMMdd&quot;.log&quot;" />      <StaticLogFileName value="false"/>      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />      <layout type="log4net.Layout.PatternLayout">        <Header value="[Header]&#13;&#10;"/>        <Footer value="[Footer]&#13;&#10;"/>        <!--正文-->        <ConversionPattern value="記錄時間:%date 線程ID:[%thread] 日志級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"  />      </layout>    </appender>    <root>      <level value="DEBUG"/>      <appender-ref ref="Log4Net_ERROR" />      <level value="INFO"/>      <appender-ref ref="Log4Net_INFO" />    </root>  </log4net></configuration>
View Code

配置文件寫完后我們在來寫一個Helper類。同樣在項目中創建一個名為LogHelper.cs的類文件。

using log4net;using System;using System.Collections.Concurrent;using System.Collections.Generic;//指定log4net使用的config文件來讀取配置信息[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"LogConfig/Log4Net.config", Watch = true)]namespace Project.Log4.Net.LogConfig{    /// <summary>    /// 日志幫助類    /// </summary>    public class LogHelper    {        private static readonly ConcurrentDictionary<Type, ILog> _loggers = new ConcurrentDictionary<Type, ILog>();        /// <summary>        /// 獲取記錄器        /// </summary>        /// <param name="source"></param>        /// <returns></returns>        private static ILog GetLogger(Type source)        {            if (_loggers.ContainsKey(source))            {                return _loggers[source];            }            else            {                ILog logger = LogManager.GetLogger(source);                _loggers.TryAdd(source, logger);                return logger;            }        }        /* Log a message object */        /// <summary>        /// 調試信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Debug(object source, string message)        {            Debug(source.GetType(), message);        }        /// <summary>        /// 調試信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        /// <param name="ps"></param>        public static void Debug(object source, string message, params object[] ps)        {            Debug(source.GetType(), string.Format(message, ps));        }        /// <summary>        /// 調試信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Debug(Type source, string message)        {            ILog logger = GetLogger(source);            if (logger.IsDebugEnabled)                logger.Debug(message);        }        /// <summary>        /// 關鍵信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Info(object source, object message)        {            Info(source.GetType(), message);        }        /// <summary>        /// 關鍵信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Info(Type source, object message)        {            ILog logger = GetLogger(source);            if (logger.IsInfoEnabled)                logger.Info(message);        }        /// <summary>        /// 警告信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Warn(object source, object message)        {            Warn(source.GetType(), message);        }        /// <summary>        /// 警告信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Warn(Type source, object message)        {            ILog logger = GetLogger(source);            if (logger.IsWarnEnabled)                logger.Warn(message);        }        /// <summary>        /// 錯誤信息        /// </summary>        /// <param name="source"></param>        /// <param name="message"></param>        public static void Error(object source,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑山县| 红安县| 祁门县| 东兴市| 蕲春县| 泉州市| 密云县| 沈丘县| 偏关县| 肥东县| 沅江市| 庆阳市| 阿拉尔市| 长丰县| 柏乡县| 安国市| 砚山县| 安阳县| 肥西县| 合作市| 北流市| 泊头市| 河池市| 秦皇岛市| 万年县| 聂拉木县| 金门县| 分宜县| 穆棱市| 获嘉县| 钦州市| 孟州市| 南京市| 岳西县| 抚远县| 盐池县| 奉节县| 汉寿县| 军事| 泰和县| 临漳县|