log4net 根據日誌Level級別記錄日誌
阿新 • • 發佈:2022-12-08
配置檔案
<?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" /> <!-- 指定按日期切分日誌檔案 --> <rollingStylevalue="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級別?請聽我給你分析。