log4net按级别写到不同文件
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <root> <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF --> <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 --> <!-- 如果没有定义LEVEL的值,则缺省为DEBUG --> <level value="ALL" /> <!-- 按日期切分日志文件,并将日期作为日志文件的名字 --> <appender-ref ref="InfoFileAppender"></appender-ref> <appender-ref ref="WarnFileAppender"></appender-ref> <appender-ref ref="ErrorFileAppender"></appender-ref> <appender-ref ref="DebugFileAppender"></appender-ref> <!--<appender-ref ref="ConsoleAppender"></appender-ref>--> </root> <appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender"> <!--<rootDir value="/logs" />--> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="INFO" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> <File value="Logs\Info\" /> <!-- 将日志信息追加到已有的日志文件中--> <appendToFile value="true" /> <!-- 指定按日期切分日志文件 --> <rollingStyle value="Date" /> <!-- 日志文件的命名规则 --> <datePattern value="yyyyMMdd.LOG" /> <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> <staticLogFileName value="false" /> <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <maxSizeRollBackups value="10" /> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />--> <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" /> </layout> </appender> <appender name="WarnFileAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="WARN" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> <File value="Logs\Warn\" /> <!-- 将日志信息追加到已有的日志文件中--> <appendToFile value="true" /> <!-- 指定按日期切分日志文件 --> <rollingStyle value="Date" /> <!-- 日志文件的命名规则 --> <datePattern value="yyyyMMdd.LOG" /> <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> <staticLogFileName value="false" /> <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <maxSizeRollBackups value="10" /> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />--> <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" /> </layout> </appender> <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="Error" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> <File value="Logs\Error\" /> <!-- 将日志信息追加到已有的日志文件中--> <appendToFile value="true" /> <!-- 指定按日期切分日志文件 --> <rollingStyle value="Date" /> <!-- 日志文件的命名规则 --> <datePattern value="yyyyMMdd.LOG" /> <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> <staticLogFileName value="false" /> <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <maxSizeRollBackups value="10" /> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />--> <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" /> </layout> </appender> <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="Debug" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> <File value="Logs\Debug\" /> <!-- 将日志信息追加到已有的日志文件中--> <appendToFile value="true" /> <!-- 指定按日期切分日志文件 --> <rollingStyle value="Date" /> <!-- 日志文件的命名规则 --> <datePattern value="yyyyMMdd.LOG" /> <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> <staticLogFileName value="false" /> <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <maxSizeRollBackups value="10" /> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />--> <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" /> </layout> </appender> <!--<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender>--> </log4net> </configuration>
彪悍的人生不需要解释,彪悍的代码不需要注释。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?