使用步骤:
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); } } } }
标签:
代码版本、日志管理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗