• 关于log4net的详细使用教程


    1、下载log4net并添加引用或通过NuGet安装程序包

     2、配置文件中添加配置

    在配置文件web.config或App.config中的Configuration节点下增加以下配置

    1. <configSections>
    2. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    3. configSections>
    4. <log4net>
    5. <appender name="Console" type="log4net.Appender.ConsoleAppender">
    6. <layout type="log4net.Layout.PatternLayout">
    7. <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/>
    8. layout>
    9. appender>
    10. <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    11. <file value="App_Log\\log"/>
    12. <appendToFile value="true"/>
    13. <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    14. <maxSizeRollBackups value="-1"/>
    15. <rollingStyle value="Composite"/>
    16. <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
    17. <staticLogFileName value="false"/>
    18. <maximumFileSize value="100MB"/>
    19. <param name="CountDirection" value="1"/>
    20. <layout type="log4net.Layout.PatternLayout">
    21. <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level %n出错类:%logger 属性:[UserName:%property{UserName}] %n日志描述:%message%newline %n"/>
    22. layout>
    23. appender>
    24. <root>
    25. <level value="ALL"/>
    26. <appender-ref ref="RollingFile"/>
    27. root>
    28. log4net>

    3、编写日志写入帮助类

    注意,在命名空间上方要加代码:[assembly: log4net.Config.XmlConfigurator(Watch = true)],才能正确读取配置文件中的内容。

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    6. namespace Demo.Helper
    7. {
    8. ///
    9. /// 日志帮助类
    10. ///
    11. public class LogHelper
    12. {
    13. #region 输出日志到Log4Net
    14. ///
    15. /// 输出日志到Log4Net
    16. ///
    17. ///
    18. /// 异常对象
    19. /// 日志等级,默认为:1 Debug 级
    20. public static void WriteLog(Type t, Exception ex, LogLevel level = LogLevel.DEBUG)
    21. {
    22. WriteLog(t, ex.Message, level);
    23. }
    24. #endregion
    25. #region 输出日志到Log4Net
    26. ///
    27. /// 输出日志到Log4Net
    28. ///
    29. ///
    30. /// 错误信息
    31. /// 日志等级,默认为:1 Debug 级
    32. public static void WriteLog(Type t, string msg, LogLevel level = LogLevel.DEBUG)
    33. {
    34. // 对应日志信息中的“%property{UserName}”
    35. //log4net.ThreadContext.Properties["UserName"] = "Test";
    36. log4net.ILog log = log4net.LogManager.GetLogger(t);
    37. switch (level)
    38. {
    39. // 日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
    40. case LogLevel.DEBUG:
    41. log.Debug(msg);
    42. break;
    43. case LogLevel.INFO:
    44. log.Info(msg);
    45. break;
    46. case LogLevel.WARN:
    47. log.Warn(msg);
    48. break;
    49. case LogLevel.ERROR:
    50. log.Error(msg);
    51. break;
    52. case LogLevel.FATAL:
    53. log.Fatal(msg);
    54. break;
    55. default:
    56. log.Debug(msg);
    57. break;
    58. }
    59. }
    60. #endregion
    61. }
    62. ///
    63. /// 日志等级:
    64. /// OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
    65. ///
    66. public enum LogLevel
    67. {
    68. ///
    69. /// ALL
    70. ///
    71. ALL = 0,
    72. ///
    73. /// DEBUG
    74. ///
    75. DEBUG = 1,
    76. ///
    77. /// INFO
    78. ///
    79. INFO = 2,
    80. ///
    81. /// WARN
    82. ///
    83. WARN = 3,
    84. ///
    85. /// ERROR
    86. ///
    87. ERROR = 4,
    88. ///
    89. /// FATAL
    90. ///
    91. FATAL = 5,
    92. ///
    93. /// OFF
    94. ///
    95. OFF = 6
    96. }
    97. }

    4、通过日志帮助类调用方法写入日志信息

    1. using System;
    2. namespace Demo
    3. {
    4. static class Program
    5. {
    6. ///
    7. /// 应用程序的主入口点。
    8. ///
    9. static void Main()
    10. {
    11. LogHelper.WriteLog(typeof(Demo), "输出日志信息。", LogLevel.INFO);
    12. }
    13. }
    14. }

    5、日志样式

    1. 记录时间:2022-08-24 17:58:48,881 线程ID:[4] 日志级别:INFO
    2. 出错类:Demo 属性:[UserName:John]
    3. 日志描述:监听启动中...
    4. 记录时间:2022-08-24 17:58:48,912 线程ID:[4] 日志级别:DEBUG
    5. 出错类:Demo 属性:[UserName:John]
    6. 日志描述:创建连接。
    7. 记录时间:2022-08-24 17:59:10,167 线程ID:[4] 日志级别:ERROR
    8. 出错类:Demo 属性:[UserName:John]
    9. 日志描述:连接失败。

  • 相关阅读:
    【Linux篇<Day14>】——SELinux、破解root密码、防火墙firewall、服务管理systemd
    Verilog:【4】脉冲发生器(pulse_gen.sv)
    JAVA任务流-算子执行排序算法
    神经网络编程的34个案例,神经网络程序实例100篇
    解题报告 之 SOJ3353 Total Flow
    【MySql系列】深入解析数据库索引
    Flutter TextField示例
    【英语:基础高阶_经典外刊阅读】L3.长句子扒皮—如何快速寻找主干
    laravel 使用微信的图片内容检测及文字内容检测
    Spring framework day 01:spring 整合数据源(连接池)
  • 原文地址:https://blog.csdn.net/yinshengchen/article/details/126510053