当前位置:   article > 正文

C# Log4Net应用

C# Log4Net应用

1 需求分析

        日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下

  1,日志文件统一保存到项目启动目录下的logs文件夹
  2,以天为单位进行日志文件的保存

2 环境配置

        通过NuGet直接搜索log4net进行安装

3 编写配置文件

           在项目目录下新建log4net.config文件

4 设置log4net.config的属性

        设置log4net.config的属性为复制到输出目录,否则在程序运行时无法加载配置文件

log4net.config

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <configSections>
  4. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  5. </configSections>
  6. <log4net>
  7. <!--其中layout节点的配置说明:
  8. %m(message):输出的日志消息;
  9. %n(newline):换行;
  10. %d(datetime):输出当前语句运行的时刻;
  11. %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
  12. %t(threadid):当前语句所在的线程ID ;
  13. %p(priority): 日志的当前日志级别;
  14. %c(class):当前日志对象的名称;
  15. %L:输出语句所在的行号;
  16. %F:输出语句所在的文件名;
  17. %-10:表示最小长度为10,如果不够,则用空格填充;-->
  18. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  19. <!--日志路径-->
  20. <param name= "File" value= "logs\\info\\"/>
  21. <!--多线程时采用最小锁定-->
  22. <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  23. <!--是否是向文件中追加日志-->
  24. <param name= "AppendToFile" value= "true"/>
  25. <!--最大的文件大小,默认的文件大小是10MB。-->
  26. <maximumFileSize value="5MB" />
  27. <!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定-->
  28. <param name= "MaxSizeRollBackups" value= "10"/>
  29. <!--日志文件名是否是固定不变的-->
  30. <param name= "StaticLogFileName" value= "false"/>
  31. <!--日志文件名格式为:2022-05-22.log-->
  32. <!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>-->
  33. <!--文件名,按日期生成文件夹-->
  34. <param name="DatePattern" value="/yyyy-MM/&quot;Info_&quot;MM-dd-HH&quot;.log&quot;"/>
  35. <!--日志根据日期滚动-->
  36. <param name= "RollingStyle" value= "Date"/>
  37. <layout type="log4net.Layout.PatternLayout">
  38. <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m %n" />
  39. </layout>
  40. <!--过滤器-->
  41. <filter type="log4net.Filter.LevelRangeFilter">
  42. <!--用于过滤掉Fatal类型的异常-->
  43. <levelMax value="ERROR"/>
  44. <levelMin value="INFO"/>
  45. </filter>
  46. <filter type="log4net.Filter.DenyAllFilter"/>
  47. <!--不加这个过滤器也可以-->
  48. </appender>
  49. <appender name="ExceptionAppender" type="log4net.Appender.RollingFileAppender">
  50. <!--日志路径-->
  51. <param name= "File" value= "logs\\Exception\\"/>
  52. <!--多线程时采用最小锁定-->
  53. <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  54. <!--是否是向文件中追加日志-->
  55. <param name= "AppendToFile" value= "true"/>
  56. <!--最大的文件大小,默认的文件大小是10MB。-->
  57. <maximumFileSize value="5MB" />
  58. <!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定-->
  59. <param name= "MaxSizeRollBackups" value= "10"/>
  60. <!--日志文件名是否是固定不变的-->
  61. <param name= "StaticLogFileName" value= "false"/>
  62. <!--日志文件名格式为:2022-05-22.log-->
  63. <!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>-->
  64. <!--文件名,按日期生成文件夹-->
  65. <param name="DatePattern" value="/yyyy-MM/&quot;fault_&quot;MM-dd-HH&quot;.log&quot;"/>
  66. <!--日志根据日期滚动-->
  67. <param name= "RollingStyle" value= "Date"/>
  68. <layout type="log4net.Layout.PatternLayout">
  69. <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] %M- %m %n" />
  70. </layout>
  71. <!--过滤器-->
  72. <filter type="log4net.Filter.LevelMatchFilter">
  73. <!--只保留Falat类型的log-->
  74. <levelToMatch value="FATAL"/>
  75. </filter>
  76. <!--阻止其他日志事件被记录,若不使用该过滤器,其他类型的信息将继续输出-->
  77. <filter type="log4net.Filter.DenyAllFilter"/>
  78. <!--不加这个过滤器也可以-->
  79. </appender>
  80. <!--<root>
  81. -->
  82. <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
  83. <!--
  84. <level value="all" />
  85. -->
  86. <!--<appender-ref ref="ColoredConsoleAppender"/>-->
  87. <!--
  88. <appender-ref ref="RollingLogFileAppender"/>
  89. </root>-->
  90. <appender name="控制台输出" type="log4net.Appender.ConsoleAppender">
  91. <layout type="log4net.Layout.PatternLayout">
  92. <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
  93. </layout>
  94. </appender>
  95. <logger name="Test">
  96. <!--指示高于此等级的方可输出-->
  97. <level value="WARN"/>
  98. <appender-ref ref="控制台输出" />
  99. </logger>
  100. <logger name="loggerAppender">
  101. <level value="ALL"/>
  102. <appender-ref ref="RollingLogFileAppender" />
  103. <appender-ref ref="ExceptionAppender" />
  104. </logger>
  105. </log4net>
  106. </configuration>

5 代码编写

5.1 添加配置信息

        在AssemblyInfo.cs中添加log4net的配置信息,指定默认配置文件为程序运行目录下的log4net.config文件,Watch标志指示当配置文件发生更改时进行重新加载,以做到实时更新配置信息.

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

5.2 代码

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
  6. ILog logger = LogManager.GetLogger("Test2");
  7. ILog logger2 = LogManager.GetLogger("Test");
  8. logger.Info("信息Info");
  9. logger.Warn("异常Warn");
  10. logger.Error("错误Error");
  11. try
  12. {
  13. string a = null;
  14. a.ToString();
  15. }
  16. catch (Exception ex)
  17. {
  18. logger.Fatal(ex.Message, ex);
  19. }
  20. logger2.Info("信息Info");
  21. logger2.Warn("异常Warn");
  22. logger2.Error("错误Error");
  23. Console.WriteLine("日志生成完成!");
  24. Console.ReadKey();
  25. }
  26. }

6 扩展资料连接

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/920196
推荐阅读
相关标签
  

闽ICP备14008679号