zoukankan      html  css  js  c++  java
  • asp.net core 使用nlog记录日志

    1 配置

    1.1 安装依赖

    使用nuget安装依赖,只需要安装NLog.Web.AspNetCore即可,NLog.Web.AspNetCore会自动依赖NLog。

    1.2 依赖注入

    修改Program.cs文件

    1.3 添加nlog配置文件

    添加nlog.config配置文件,添加在项目的根目录,配置文件内容在github拷贝即可。github地址:https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3
    配置文件内容:

    <?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"
          throwConfigExceptions="true"
          internalLogLevel="info"
          internalLogFile="c:	empinternal-nlog-AspNetCore3.txt">
    
      <!-- enable asp.net core layout renderers -->
      <extensions>
        <add assembly="NLog.Web.AspNetCore"/>
      </extensions>
    
      <!-- the targets to write to -->
      <targets>
        <!-- File Target for all log messages with basic details -->
        <target xsi:type="File" name="allfile" fileName="c:	emp
    log-AspNetCore3-all-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
    
        <!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
        <target xsi:type="File" name="ownFile-web" fileName="c:	emp
    log-AspNetCore3-own-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|" />
    
        <!--Console Target for hosting lifetime messages to improve Docker / Visual Studio startup detection -->
        <target xsi:type="Console" name="lifetimeConsole" layout="${level:truncate=4:lowercase=true}: ${logger}[0]${newline}      ${message}${exception:format=tostring}" />
      </targets>
    
      <!-- rules to map from logger name to target -->
      <rules>
        <!--All logs, including from Microsoft-->
        <logger name="*" minlevel="Trace" writeTo="allfile" />
    
        <!--Output hosting lifetime messages to console target for faster startup detection -->
        <logger name="Microsoft.Hosting.Lifetime" minlevel="Info" writeTo="lifetimeConsole, ownFile-web" final="true" />
    
        <!--Skip non-critical Microsoft logs and so log only own logs-->
        <logger name="Microsoft.*" maxlevel="Info" final="true" />  <!-- BlackHole -->
    
        <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
      </rules>
    </nlog>
    

    2 常见问题

    2.1 使用变量指定日志文件夹

    <variable name="logdir" value="Log/${shortdate}"></variable>
      
    <!-- the targets to write to -->
    <targets>
      <!-- File Target for all log messages with basic details -->
      <target xsi:type="File" name="allfile" fileName="${logdir}/all.log"
              layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
    
      <!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
      <target xsi:type="File" name="ownFile-web" fileName="${logdir}/own-web.log"
              layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|" />
    
      <!--Console Target for hosting lifetime messages to improve Docker / Visual Studio startup detection -->
      <target xsi:type="Console" name="lifetimeConsole" layout="${level:truncate=4:lowercase=true}: ${logger}[0]${newline}      ${message}${exception:format=tostring}" />
    </targets>
    

    2.2 不输出库信息,只记录我们自己输出的信息

    <rules>
      <logger name="Microsoft.*" maxlevel="Info" final="true" />
      <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
    </rules>
    

  • 相关阅读:
    GoGin 跨域处理
    Vue sso认证快速接入实践
    领域驱动设计(DDD):项目目录(包、模块)结构
    高绩效团队建设与管理系列课程
    VR设备产业链
    Supercell资深策划谈三大产品制作经验:游戏设计就像丛林探险,必须险中求胜
    领导力管理培训课
    博众投资:虚拟数字人概念,开辟元宇宙炒作新战场!
    FW: Flow区块链门票NFT开发实战【含源码】
    放弃学术研究,做投资大获成功
  • 原文地址:https://www.cnblogs.com/abelverycool/p/14506239.html
Copyright © 2011-2022 走看看