• net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二、配置log4net


    注意:所有的Nuget包默认都装在NET6Demo_WebApi项目下,其它类库项目按需添加

    第一步,安装nuget包。 

     第二步,添加log4net的配置文件

    在api层,添加文件夹Config,然后添加log4net.config文件

     log4net 在.net6 中对写入数据库并不友好,不建议写入数据库

    1. "1.0"?>
    2. <configuration>
    3. <configSections>
    4. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    5. configSections>
    6. <log4net>
    7. <root>
    8. <priority value="ALL"/>
    9. <level value="ALL"/>
    10. <appender-ref ref="ErrorLog" />
    11. <appender-ref ref="WarnLog" />
    12. <appender-ref ref="InfoLog" />
    13. <appender-ref ref="DebugLog" />
    14. root>
    15. <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
    16. <file value="Log\\LogError\\"/>
    17. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    18. <datePattern value="yyyyMMdd".log""/>
    19. <appendToFile value="true"/>
    20. <rollingStyle value="Composite"/>
    21. <staticLogFileName value="false"/>
    22. <maximumFileSize value="200MB"/>
    23. <maxSizeRollBackups value="-1"/>
    24. <layout type="log4net.Layout.PatternLayout">
    25. <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
    26. layout>
    27. <filter type="log4net.Filter.LevelRangeFilter">
    28. <LevelMin value="ERROR" />
    29. <LevelMax value="ERROR" />
    30. filter>
    31. appender>
    32. <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
    33. <file value="Log\\LogWarn\\"/>
    34. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    35. <datePattern value="yyyyMMdd".log""/>
    36. <appendToFile value="true"/>
    37. <rollingStyle value="Composite"/>
    38. <staticLogFileName value="false"/>
    39. <maximumFileSize value="200MB"/>
    40. <maxSizeRollBackups value="-1"/>
    41. <layout type="log4net.Layout.PatternLayout">
    42. <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
    43. layout>
    44. <filter type="log4net.Filter.LevelRangeFilter">
    45. <LevelMin value="WARN" />
    46. <LevelMax value="WARN" />
    47. filter>
    48. appender>
    49. <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
    50. <file value="Log\\LogInfo\\"/>
    51. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    52. <datePattern value="yyyyMMdd".log""/>
    53. <appendToFile value="true"/>
    54. <rollingStyle value="Composite"/>
    55. <staticLogFileName value="false"/>
    56. <maximumFileSize value="200MB"/>
    57. <maxSizeRollBackups value="-1"/>
    58. <layout type="log4net.Layout.PatternLayout">
    59. <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
    60. layout>
    61. <filter type="log4net.Filter.LevelRangeFilter">
    62. <LevelMin value="INFO" />
    63. <LevelMax value="INFO" />
    64. filter>
    65. appender>
    66. <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
    67. <file value="Log\\LogDebug\\"/>
    68. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    69. <datePattern value="yyyyMMdd".log""/>
    70. <appendToFile value="true"/>
    71. <rollingStyle value="Composite"/>
    72. <staticLogFileName value="false"/>
    73. <maximumFileSize value="200MB"/>
    74. <maxSizeRollBackups value="-1"/>
    75. <layout type="log4net.Layout.PatternLayout">
    76. <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
    77. layout>
    78. <filter type="log4net.Filter.LevelRangeFilter">
    79. <LevelMin value="DEBUG" />
    80. <LevelMax value="DEBUG" />
    81. filter>
    82. appender>
    83. log4net>
    84. configuration>

    在项目Utility中添加类Loh4Extention.cs

    代码内容如下。主要是过滤掉日志中太多的重复信息。注意代码粘贴后会报错,多是因为没有安装包。解决方法就是哪里报错就在哪里安装包 

    1. using Microsoft.Extensions.Logging;
    2. namespace NET6Demo.Utility.Log
    3. {
    4. public static class Log4Extention
    5. {
    6. public static void InitLog4(ILoggingBuilder loggingBuilder)
    7. {
    8. loggingBuilder.AddFilter("System", LogLevel.Warning);
    9. loggingBuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
    10. loggingBuilder.AddLog4Net(new Log4NetProviderOptions()
    11. {
    12. Log4NetConfigFileName = "Config/log4net.config",
    13. Watch = true
    14. });
    15. }
    16. }
    17. }

    program.cs文件中添加以下代码,添加log4net全局引用.注意代码粘贴后会报错,多是因为没有安装包,或者没有引用。解决方法就是哪里报错就在哪里安装包

    1. #region 添加Log4net
    2. builder.Host.ConfigureLogging((context, loggingBuilder) =>
    3. {
    4. Log4Extention.InitLog4(loggingBuilder);
    5. });
    6. #endregion

    使用时依赖注入,现在开始建立控制器

    先建立一个基类控制器,再建一个测试控制器继承基类控制器

     BaseController.cs

    1. using Microsoft.AspNetCore.Mvc;
    2. namespace NET6Demo_WebApi.Controllers
    3. {
    4. [ApiController]
    5. public abstract class BaseController : ControllerBase
    6. {
    7. }
    8. }

    TestController.cs

    1. using Microsoft.AspNetCore.Authorization;
    2. using Microsoft.AspNetCore.Mvc;
    3. namespace NET6Demo_WebApi.Controllers
    4. {
    5. public class TestController : BaseController
    6. {
    7. private ILogger _logger;
    8. public TestController(ILogger logger)
    9. {
    10. _logger = logger;
    11. }
    12. [AllowAnonymous]
    13. [HttpGet("GetTest")]
    14. public async Task GetTestResult()
    15. {
    16. Console.WriteLine("测试一下输出日志");
    17. _logger.LogInformation("日志输出了");
    18. return Ok();
    19. }
    20. }
    21. }

    启动项目,来测试一下,打开swagger首页,点击Test的try it out ,然后点击 Execute ,让程序执行

    控制台可以看到输出内容

     

     打开项目的bin文件夹,可以看到已经生成的log目录

    找到其中的loginfo,因为刚刚的日志是用log.infomation写入的。

     

    由日期生成的文件名,打开可以看到日志内容已被写入 

     到此。log4net配置完毕。注意所有使用log4net的类,都需要依赖注入ILogger

  • 相关阅读:
    Pycharm远程连接服务器不能debug问题
    汇率之谜:揭秘黄金折算与真实人民币汇率的神秘差距
    十五、异常(7)
    Excel直接打开csv文件后,数据不能正常显示的解决方法
    Mysql安装
    tomcat下载安装及配置教程
    基于tensorflow的咖啡豆识别
    36. 干货系列从零用Rust编写负载均衡及代理,内网穿透中内网代理的实现
    青少年软件编程C++二级题库(11-20)
    4.17每日一题(直角坐标累次积分到直角/极坐标累次积分的转换)
  • 原文地址:https://blog.csdn.net/yexuanbaby/article/details/126469903