• .Net Core3.1 集成Log4net


    1.准备

      首先nuget添加下引用  Microsoft.Extensions.Logging.Log4Net.AspNetCore

    目前的版本为v3.1.0 ,添加完成后我们开始注册。

    2.注册

      2.1在Program.cs中注册

           找到 Program.cs里的CreateHostBuilder

          

            

          添加如上代码,,AddFilter() 的意思是过滤掉指定的相关日志。

          注意:此处CreateHostBuilder在版本中不一致。 

          最后添加上配置文件就ok,附上配置文件:

          

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
      <!-- Define some output appenders -->
      <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
        <file value="logslog.txt" />
        <!--追加日志内容-->
        <appendToFile value="true" />
    
        <!--防止多线程时不能Log,官方说线程非安全-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    
        <!--可以为:Once|Size|Data|Compsite-->
        <!--Compsite为Size和Data的组合-->
        <rollingStyle value="Composite" />
    
        <!--当备份文件时,为文件名加的后缀-->
        <datePattern value="yyyyMMdd'.log'" />
    
        <!--日志的最大个数,都是最新的-->
        <!--rollingStyle为Size时,只能有value个日志-->
        <!--rollingStyle为Compsite时,每天有value个日志-->
        <maxSizeRollBackups value="20" />
    
        <!--可用的单位:KB|MB|GB-->
        <maximumFileSize value="3MB" />
    
        <!--值为true时,当前最新日志文件名永远为file节点中的名字-->
        <staticLogFileName value="true" />
    
        <!--输出级别在INFO和ERROR之间的日志-->
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="ALL" />
          <param name="LevelMax" value="FATAL" />
        </filter>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
        </layout>
      </appender>
      <root>
        <priority value="ALL" />
        <level value="ALL" />
        <appender-ref ref="rollingAppender" />
      </root>
    </log4net>
    log4net.Config

      2.2在Startup中注册

          此时已经添加了配置文件,再将program中的注册换成在startup中的config注册Log4Net

          

          

    3.使用

      以WeatherForecastController为例,首先声明一个ILogger类型对象:

    private readonly ILogger<WeatherForecastController> _logger
    

      

    使用构造函数,将log4net注入到ILogger:

    public WeatherForecastController(ILogger<WeatherForecastController> logger) 
    { 
        _logger = logger; 
    }
    

      现在WeatherForecastController是这样的

    [ApiController]
        [Route("[controller]")]
        public class WeatherForecastController : ControllerBase
        {
            private static readonly string[] Summaries = new[]
            {
                "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
            };
    
            private readonly ILogger<WeatherForecastController> _logger;
    
            public WeatherForecastController(ILogger<WeatherForecastController> logger)
            {
                _logger = logger;
            }
    
            [HttpGet]
            public IEnumerable<WeatherForecast> Get()
            {
                _logger.LogInformation("======WeatherForecastController Get()======");
                var rng = new Random();
                return Enumerable.Range(1, 5).Select(index => new WeatherForecast
                {
                    Date = DateTime.Now.AddDays(index),
                    TemperatureC = rng.Next(-20, 55),
                    Summary = Summaries[rng.Next(Summaries.Length)]
                })
                .ToArray();
            }
        }
    WeatherForecastController

    4.测试一下

      在Get方法中写入如下日志

      运行后会出现一个名为logs文件夹,写入的日志就在logs下的log.txt中。

      

      

  • 相关阅读:
    结对项目之需求分析与原型设计
    第二次结对编程作业——毕设导师智能匹配
    历届软工作品、竞赛平台作品调研
    软件工程实践项目课程的自我目标
    Build to win!——获得小黄衫的感想
    VC++智能感知插件 Visual Assist X
    Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)
    安装cronsun管理定时脚本
    四层、七层负载均衡的区别
    使用LVS实现负载均衡原理及安装配置详解
  • 原文地址:https://www.cnblogs.com/zousc/p/12527856.html
Copyright © 2020-2023  润新知