• asp.net Core 3.1配置log4net


    环境:VS2019  asp.net Core 3.1

    下载包

      1、log4net

      2、Microsoft.Extensions.Logging

      3、Microsoft.Extensions.Logging.Console

      4、Microsoft.Extensions.Logging.Log4Net.AspNetCore

    第一步:在网站的根目录下添加配置文件:log4net.config,配置如下:

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
        <!-- Define some output appenders -->
        <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
            <file value="loglog.txt" />
            <!--追加日志内容-->
            <appendToFile value="true" />
    
            <!--防止多线程时不能写Log,官方说线程非安全-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    
            <!--可以为:Once|Size|Date|Composite-->
            <!--Composite为Size和Date的组合-->
            <rollingStyle value="Composite" />
    
            <!--当备份文件时,为文件名加的后缀-->
            <datePattern value="yyyyMMdd.TXT" />
    
            <!--日志最大个数,都是最新的-->
            <!--rollingStyle节点为Size时,只能有value个日志-->
            <!--rollingStyle节点为Composite时,每天有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>

    第二步:修改Program.cs文件。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Hosting;
    using Microsoft.Extensions.Logging;
    
    namespace WebApplication1
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureLogging((context, logger) =>
                    {
                        logger.AddFilter("System", LogLevel.Warning); //过滤掉System
                        logger.AddFilter("Microsoft", LogLevel.Warning);//过滤掉Microsoft
                        logger.AddLog4Net();//添加日志 --这一步很很重要,否则无法写入日志
                    })
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
        }
    }

    第三步:在控制器中写日志.

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    using WebApplication1.Models;
    
    namespace WebApplication1.Controllers
    {
        public class HomeController : Controller
        {
            private readonly ILogger<HomeController> _logger; //定义日志对象
    
            public HomeController(ILogger<HomeController> logger)
            {
                _logger = logger; //初始化日志对象
            }
    
            public async Task<IActionResult> Index()
            {
                _logger.LogWarning("哈哈,出现错误拉!!"); //写入日志
    
                return View();
            }
    
            public async Task<IActionResult> Privacy()
            {
                return View();
            }
    
            [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
            public IActionResult Error()
            {
                return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
            }
        }
    }

     第四步:在网站的根目录查看日志文件.

    收工。。。。。。。。

  • 相关阅读:
    韩式英语
    Daily dictation 听课笔记
    words with same pronunciation
    you will need to restart eclipse for the changes to take effect. would you like to restart now?
    glottal stop(britain fountain mountain)
    education 的发音
    第一次用Matlab 的lamada语句
    SVN的switch命令
    String的split
    SVN模型仓库中的资源从一个地方移动到另一个地方的办法(很久才解决)
  • 原文地址:https://www.cnblogs.com/huaan011/p/13452643.html
Copyright © 2020-2023  润新知