• NetCore使用Nlog记录日志


    当前环境: win10+vs2019+netcore3.1

    添加Nuget包引用:NLog.Web.AspNetCore

     2. 添加 nlog.config配置文件 或者安装包 nlog.confg

    <?xml version="1.0" encoding="utf-8" ?>
    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          autoReload="true"
          internalLogLevel="Info"
          internalLogFile="c:	empinternal-nlog.txt">
    
        <!-- enable asp.net core layout renderers -->
        <extensions>
            <add assembly="NLog.Web.AspNetCore"/>
        </extensions>
    
        <!-- the targets to write to -->
        <targets>
            <!-- write logs to file  -->
            <target xsi:type="File" name="allfile" fileName="logs
    log-all-${shortdate}.log"
                    layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
    
            <!-- another file log, only own logs. Uses some ASP.NET core renderers -->
            <target xsi:type="File" name="ownFile-web" fileName="logs
    log-own-${shortdate}.log"
                    layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
        </targets>
    
        <!-- rules to map from logger name to target -->
        <rules>
            <!--All logs, including from Microsoft-->
            <logger name="*" minlevel="Trace" writeTo="allfile" />
    
            <!--Skip non-critical Microsoft logs and so log only own logs-->
            <logger name="Microsoft.*" maxlevel="Info" final="true" />
            <!-- BlackHole without writeTo -->
            <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
        </rules>
    </nlog>
    View Code

    3. 在CreateHostBuilder 中添加使用Nlog ( ConfigureLogging)

    public static IHostBuilder CreateHostBuilder(string[] args)
    {
           return Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    }).ConfigureLogging(
                        logging =>
                        {
                            // 清除系统默认的日志
                            //logging.ClearProviders();
                            logging.SetMinimumLevel(LogLevel.Trace);
                        }).UseNLog();
    }

    4. 配置文件路径

    NLog.Web.NLogBuilder.ConfigureNLog("nlog.config")

    5. 调用

        public class HomeController : Controller
        {
            private readonly ILogger<HomeController> _logger;
    
            public HomeController(ILogger<HomeController> logger)
            {
                _logger = logger;
                _logger.LogDebug(1, "NLog injected into HomeController");
            }
    
            public IActionResult Index()
            {
                _logger.LogInformation("Hello, this is the index!");
                return View();
            }
    }

    6. 效果

    在binDebug etcoreapp3.1 目录下生成了logs文件夹

  • 相关阅读:
    UnQLite简介
    .net中webconfig自定义配置
    webservice有关application/xop+xml的异常
    .NET4缓存过期策略摘录
    关于sea.js的笔记
    npm笔记和bower
    使用npm安装一些包失败了的看过来(npm国内镜像介绍)
    easyui的datagird动态设置当前页数
    Oracle中Merge into用法总结
    Oracle 12.1.0.2 对JSON的支持
  • 原文地址:https://www.cnblogs.com/wtujvk/p/13222233.html
Copyright © 2020-2023  润新知