使用步骤:
1. 添加 log4Net 引用
在解决方案管理器视图中的目标项目上右键 -> 管理 NuGet 程序包;
添加 log4Net 包,如下图所示:
2. 添加 Log4Net 配置文件
添加示例配置文件 log4net.config(文件名随意),并更改该文件的属性。如下图所示:
示例文件 log4net.config 具体内容,如下所示:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 1. 添加 log4net 配置的节点声明代码--> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/> </configSections> <!--2. log4net 配置的核心代码--> <log4net> <!--日志输出级别--> <root> <level value="ALL"/> <appender-ref ref="DebugLogFileAppender"/> <appender-ref ref="ErrorLogFileAppender"/> <appender-ref ref="ConsoleAppender"/> </root> <!--调试日志输出--> <appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender"> <StaticLogFileName value="false"/> <!--动态生成文件名--> <file value="Logs\Log4NetDemo_"/> <!--文件名(带路径)的固定部分--> <DatePattern value="yyyy-MM-dd'.log'"/> <!--文件名(带路径)的动态部分--> <Encoding value="utf-8"/> <!--文件编码--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <!--使用最小锁定模型,以允许多个进程可以写入同一个文件 --> <appendToFile value="true"/> <!--内容是否追加到文件末尾(如果为 False 则覆盖)--> <RollingStyle value="Composite"/> <MaximumFileSize value="10MB"/> <!--单个文件最大大小--> <MaxSizeRollBackups value="10"/> <!--备份文件的个数(保留10个最近的日志,会循环覆盖)--> <layout type="log4net.Layout.PatternLayout"> <!--输出格式--> <ConversionPattern value="Level: %-5p %nThread ID: %t %nTime: %d %nClass: %c %nFile: %F Line: %L %nMessage: %m %n%exception %n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="DEBUG" /> <levelMax value="FATAL" /> </filter> </appender> <!--错误日志输出--> <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender"> <StaticLogFileName value="false"/> <!--动态生成文件名--> <file value="Logs\Error Logs\Log4NetDemo_Error_"/> <!--文件名(带路径)的固定部分--> <DatePattern value="yyyy-MM-dd'.log'"/> <!--文件名(带路径)的动态部分--> <Encoding value="utf-8"/> <!--文件编码--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <!--使用最小锁定模型,以允许多个进程可以写入同一个文件 --> <appendToFile value="true"/> <!--内容是否追加到文件末尾(如果为 False 则覆盖)--> <RollingStyle value="Composite"/> <MaximumFileSize value="10MB"/> <!--单个文件最大大小--> <MaxSizeRollBackups value="10"/> <!--备份文件的个数(保留10个最近的日志,会循环覆盖)--> <layout type="log4net.Layout.PatternLayout"> <!--输出格式--> <ConversionPattern value="Level: %-5p %nThread ID: %t %nTime: %d %nClass: %c %nFile: %F Line: %L %nMessage: %m %n%exception %n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter> </appender> <!--控制台输出--> <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR"/> <foreColor value ="white"/> <backColor value ="Red,HighIntensity"/> </mapping> <mapping> <level value="DEBUG"/> <backColor value ="Green"/> </mapping> <layout type="log4net.Layout.PatternLayout"> <ConversionPattern value="Log Level: %-5level%n%date thread[%t] %c%nMessage: %m%n%exception%n"/> </layout> </appender> </log4net> </configuration>
3. 通过代码使用 Log4Net
代码调用示例,如下所示:
using log4net; using log4net.Config; using System; using System.IO; namespace Log4NetTest { class Program { static void Main(string[] args) { LogTest logTest = new LogTest(); logTest.LogTestInfo(); Console.ReadLine(); } } public class LogTest { const string ConfigFileName = "Config\\Log4net.config"; static ILog log = null; public LogTest() { XmlConfigurator.ConfigureAndWatch(new FileInfo(ConfigFileName)); log = LogManager.GetLogger(this.GetType()); } public void LogTestInfo() { try { int id_Int32 = 0; id_Int32 = Convert.ToInt32("666"); log.Debug("id_Int32 = " + id_Int32.ToString()); id_Int32 = Convert.ToInt32("666a"); log.Debug("id_Int32 = " + id_Int32.ToString()); } catch (Exception e1) { log.Error(e1.Message, e1); } } } }