赞
踩
日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下
1,日志文件统一保存到项目启动目录下的logs文件夹
2,以天为单位进行日志文件的保存
通过NuGet直接搜索log4net进行安装
在项目目录下新建log4net.config文件
设置log4net.config的属性为复制到输出目录,否则在程序运行时无法加载配置文件
log4net.config
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
- </configSections>
- <log4net>
- <!--其中layout节点的配置说明:
- %m(message):输出的日志消息;
- %n(newline):换行;
- %d(datetime):输出当前语句运行的时刻;
- %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
- %t(threadid):当前语句所在的线程ID ;
- %p(priority): 日志的当前日志级别;
- %c(class):当前日志对象的名称;
- %L:输出语句所在的行号;
- %F:输出语句所在的文件名;
- %-10:表示最小长度为10,如果不够,则用空格填充;-->
- <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
- <!--日志路径-->
- <param name= "File" value= "logs\\info\\"/>
- <!--多线程时采用最小锁定-->
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
- <!--是否是向文件中追加日志-->
- <param name= "AppendToFile" value= "true"/>
- <!--最大的文件大小,默认的文件大小是10MB。-->
- <maximumFileSize value="5MB" />
- <!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定-->
- <param name= "MaxSizeRollBackups" value= "10"/>
- <!--日志文件名是否是固定不变的-->
- <param name= "StaticLogFileName" value= "false"/>
- <!--日志文件名格式为:2022-05-22.log-->
- <!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>-->
- <!--文件名,按日期生成文件夹-->
- <param name="DatePattern" value="/yyyy-MM/"Info_"MM-dd-HH".log""/>
- <!--日志根据日期滚动-->
- <param name= "RollingStyle" value= "Date"/>
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m %n" />
- </layout>
- <!--过滤器-->
- <filter type="log4net.Filter.LevelRangeFilter">
- <!--用于过滤掉Fatal类型的异常-->
- <levelMax value="ERROR"/>
- <levelMin value="INFO"/>
- </filter>
- <filter type="log4net.Filter.DenyAllFilter"/>
- <!--不加这个过滤器也可以-->
- </appender>
- <appender name="ExceptionAppender" type="log4net.Appender.RollingFileAppender">
- <!--日志路径-->
- <param name= "File" value= "logs\\Exception\\"/>
- <!--多线程时采用最小锁定-->
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
- <!--是否是向文件中追加日志-->
- <param name= "AppendToFile" value= "true"/>
- <!--最大的文件大小,默认的文件大小是10MB。-->
- <maximumFileSize value="5MB" />
- <!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定-->
- <param name= "MaxSizeRollBackups" value= "10"/>
- <!--日志文件名是否是固定不变的-->
- <param name= "StaticLogFileName" value= "false"/>
- <!--日志文件名格式为:2022-05-22.log-->
- <!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>-->
- <!--文件名,按日期生成文件夹-->
- <param name="DatePattern" value="/yyyy-MM/"fault_"MM-dd-HH".log""/>
- <!--日志根据日期滚动-->
- <param name= "RollingStyle" value= "Date"/>
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] %M- %m %n" />
- </layout>
- <!--过滤器-->
- <filter type="log4net.Filter.LevelMatchFilter">
- <!--只保留Falat类型的log-->
- <levelToMatch value="FATAL"/>
- </filter>
- <!--阻止其他日志事件被记录,若不使用该过滤器,其他类型的信息将继续输出-->
- <filter type="log4net.Filter.DenyAllFilter"/>
-
- <!--不加这个过滤器也可以-->
- </appender>
- <!--<root>
- -->
- <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
- <!--
- <level value="all" />
- -->
- <!--<appender-ref ref="ColoredConsoleAppender"/>-->
- <!--
- <appender-ref ref="RollingLogFileAppender"/>
- </root>-->
- <appender name="控制台输出" type="log4net.Appender.ConsoleAppender">
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
- </layout>
- </appender>
- <logger name="Test">
- <!--指示高于此等级的方可输出-->
- <level value="WARN"/>
- <appender-ref ref="控制台输出" />
- </logger>
- <logger name="loggerAppender">
- <level value="ALL"/>
- <appender-ref ref="RollingLogFileAppender" />
- <appender-ref ref="ExceptionAppender" />
- </logger>
- </log4net>
- </configuration>
5.1 添加配置信息
在AssemblyInfo.cs中添加log4net的配置信息,指定默认配置文件为程序运行目录下的log4net.config文件,Watch标志指示当配置文件发生更改时进行重新加载,以做到实时更新配置信息.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
5.2 代码
- class Program
- {
- static void Main(string[] args)
- {
- log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
- ILog logger = LogManager.GetLogger("Test2");
- ILog logger2 = LogManager.GetLogger("Test");
- logger.Info("信息Info");
- logger.Warn("异常Warn");
- logger.Error("错误Error");
- try
- {
- string a = null;
- a.ToString();
- }
- catch (Exception ex)
- {
- logger.Fatal(ex.Message, ex);
- }
- logger2.Info("信息Info");
- logger2.Warn("异常Warn");
- logger2.Error("错误Error");
- Console.WriteLine("日志生成完成!");
- Console.ReadKey();
- }
- }
https://blog.csdn.net/u013066730/article/details/117248306
https://blog.csdn.net/weixin_44900027/article/details/128732197
https://www.cnblogs.com/liquorbin/archive/2012/05/11/2496284.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。