1_Log4Net使用

1.安装log4net和Microsoft.Extensions.Logging.Log4Net.AspNetCore的Nuget包
2.添加log4net.Config配置文件
<?xml version="1.0" encoding="utf-8"?>
<log4net>
    <appender name="Log4Name" type="log4net.Appender.RollingFileAppender">
        <!--日志路径-->
        <param name="File" value="log\log.log" />
        <!--是否是向文件中追加日志-->
        <param name="AppendToFile" value="true" />
        <!--日志最大个数,都是最新的-->
        <!--rollingStyle节点为Size时,只能有value个日志-->
        <!--rollingStyle节点为Composite时,每天有value个日志-->
        <param name="MaxSizeRollBackups" value="200" />
        <!--单个日志文件大小-->
        <!--可用的单位:KB|MB|GB-->
        <param name="MaximumFileSize" value="5MB" />
        <!--日志文件名是否是固定不变的-->
        <!--置为true,当前最新日志文件名永远为file节中的名字-->
        <param name="StaticLogFileName" value="false" />
        <!--日志文件名格式为:2008-08-31.log-->
        <DatePattern value="yyyy-MM-dd HH'时.log'"></DatePattern>
        <!--防止多线程时不能写Log,官方说线程非安全-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <!--可以为:Once|Size|Date|Composite-->
        <!--Composite为Size和Date的组合-->
        <param name="RollingStyle" value="Size" />
        <!--输出级别在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 %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
    </appender>
    <root>
        <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
        <level value="ALL" />
        <appender-ref ref="Log4Name" />
    </root>
</log4net>
3.1.在Program.cs进行注入
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureLogging((context,logging)=>
    {
        logging.ClearProviders();   //清理系统默认的日志记录器
        //logging.AddFilter("System", LogLevel.Warning);  //系统类日志基本设置为警告
        //logging.AddFilter("Microsoft", LogLevel.Warning);   //系统类日志基本设置为警告
        logging.AddLog4Net("log4net.config");   //注册log4net中间件
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });
3.2.在Startup.cs进行注入
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,LoggerFactory loggerFactory)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    //添加log4net有关中间件
    loggerFactory.AddLog4Net("log4net.config");
    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
4.在Controller进行使用
/// <summary>
/// 默认控制器
/// </summary>
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    /// <summary>
    /// 属性值
    /// </summary>
    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;
        logger.LogWarning("WeatherForecastController被构造");
    }
    /// <summary>
    /// 获取默认数据信息
    /// </summary>
    /// <param name="param">参数</param>
    /// <returns>默认数据信息</returns>
    [HttpGet]
    public IEnumerable<WeatherForecast> Get(string param)
    {
        _logger.LogInformation("获取默认数据信息");
        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();
    }
}

参考文档

原文地址:https://www.cnblogs.com/xiaojinFat/p/13365785.html

posted @ 2021-09-16 18:03  云谋  阅读(98)  评论(0)    收藏  举报