1. 程式人生 > 其它 >log4net 根據日誌Level級別記錄日誌

log4net 根據日誌Level級別記錄日誌

配置檔案

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <!-- Debug 將日誌以回滾檔案的形式寫到檔案中 -->
  <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender" >
    <!-- 日誌檔案存放位置,可以為絕對路徑也可以為相對路徑 -->
    <file value="Log_Console/" />
    <!-- 日誌檔案的命名規則 -->
<datePattern value="yyyy-MM-dd/'Debug.log'"/> <!-- 將日誌資訊追加到已有的日誌檔案中--> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="5MB" /> <!-- 指定按日期切分日誌檔案 --> <rollingStyle
value="Date"/> <!-- 當將日期作為日誌檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value="false" /> <!-- 最小鎖定模式,以允許多個程序可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <
param name="ConversionPattern" value="時間:%d 內容: %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Debug" /> <param name="LevelMax" value="Debug" /> </filter> </appender> <!-- Info 將日誌以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender" > <!-- 日誌檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log_Console/" /> <!-- 日誌檔案的命名規則 --> <datePattern value="yyyy-MM-dd/'Info.log'"/> <!-- 將日誌資訊追加到已有的日誌檔案中--> <appendToFile value="true" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="5MB" /> <!-- 指定按日期切分日誌檔案 --> <rollingStyle value="Date"/> <!-- 當將日期作為日誌檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value="false" /> <!-- 最小鎖定模式,以允許多個程序可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="時間:%d 內容: %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Info" /> </filter> </appender> <!-- WARN 將日誌以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender" > <!-- 日誌檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log_Console/" /> <!-- 日誌檔案的命名規則 --> <datePattern value="yyyy-MM-dd/'Warn.log'"/> <!-- 將日誌資訊追加到已有的日誌檔案中--> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="5MB" /> <!-- 指定按日期切分日誌檔案 --> <rollingStyle value="Date"/> <!-- 當將日期作為日誌檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value="false" /> <!-- 最小鎖定模式,以允許多個程序可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="時間:%d 內容: %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Warn" /> <param name="LevelMax" value="Warn" /> </filter> </appender> <!-- Error 將日誌以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender" > <!-- 日誌檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log_Console/" /> <!-- 日誌檔案的命名規則 --> <datePattern value="yyyy-MM-dd/'Error.log'"/> <!-- 將日誌資訊追加到已有的日誌檔案中--> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="5MB" /> <!-- 指定按日期切分日誌檔案 --> <rollingStyle value="Date"/> <!-- 當將日期作為日誌檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value="false" /> <!-- 最小鎖定模式,以允許多個程序可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="時間:%d 內容: %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Error" /> <param name="LevelMax" value="Error" /> </filter> </appender> <!-- Fatal 將日誌以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender" > <!-- 日誌檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log_Console/" /> <!-- 日誌檔案的命名規則 --> <datePattern value="yyyy-MM-dd/'Fatal.log'"/> <!-- 將日誌資訊追加到已有的日誌檔案中--> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="5MB" /> <!-- 指定按日期切分日誌檔案 --> <rollingStyle value="Date"/> <!-- 當將日期作為日誌檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value="false" /> <!-- 最小鎖定模式,以允許多個程序可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="時間:%d 內容: %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Fatal" /> <param name="LevelMax" value="Fatal" /> </filter> </appender> <root> <!--控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日誌將不會被記錄 如果沒有定義LEVEL的值,則預設為DEBUG--> <appender-ref ref="RollingFileDebug" /> <appender-ref ref="RollingFileInfo" /> <!--<appender-ref ref="RollingFileWarn" />--> <!--<appender-ref ref="RollingFileError" />--> <!--<appender-ref ref="RollingFileFatal" />--> <level value="DEBUG" /> </root> <logger name="NHibernate"> <level value="WARN" /> </logger> </log4net>

日誌記錄類

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
namespace FileMonitor
{
    /// <summary>
    /// 日誌幫助類
    /// 需要設定 log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~/MyConfig/Log4Net.config")));
    /// 呼叫:private static readonly log4net.ILog MyLog = Log.LogHelper.GetInstance();
    /// </summary>
    public class LogHelper
    {
        private static ILog log;
        private static LogHelper logHelper = null;
        /// <summary>
        /// 初始化
        /// </summary>
        /// <returns></returns>
        public static ILog GetInstance()
        {
            logHelper = new LogHelper(null);
 
            return log;
        }
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="configPath"></param>
        /// <returns></returns>
        public static ILog GetInstance(string configPath)
        {
            logHelper = new LogHelper(configPath);
 
            return log;
        }
        /// <summary>
        /// 建構函式
        /// </summary>
        /// <param name="configPath">配置檔案路徑</param>
        private LogHelper(string configPath)
        {
            if (!string.IsNullOrEmpty(configPath))
            {
                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
            }
            else
            {
                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            }
        }
    }
}

引用的log4net.dll檔案

出處:https://blog.csdn.net/gavinoldmen/article/details/116203589

=======================================================================================

在程式中如何根據日誌級別,輸出不同的日誌呢?如何獲取日誌的Level級別?請聽我給你分析。