• ASP.NET应用程序使用NLog记录日志


      在上一家公司就在使用NLog做日志记录,调用方便又好配置,查看日志非常方便。所以在新公司新项目中就想到了它。背景交代完毕。

      先看配置,在ASP.NET应用程序中,NLog会自动扫描以下这几个文件

    1)web.config
    2)与web.config在同一目录下的web.nlog文件
    3)程序目录下的NLog.config文件
    4)NLog.dll所在目录下的NLog.dll.nlog文件

       我们按第一种文件配置,那么下面就是web.config配置文件中的内容

    <configSections>

      <!--Nlog-->

      <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" restartOnExternalChanges="false"/>

    </configSections>

    <nlog>

      <include file="${basedir}/Configuration/NLog.config" />

    </nlog>

      然后就是NLog.config。这个文件的内容看名字就知道,是NLog的具体行为的配置信息,示例如下

    <?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">
      <targets>
        <target name="exceptionFile" xsi:type="File" fileName="${basedir}/Site_Log/${shortdate}/${logger}_${level}.txt" layout="${longdate}|${level:uppercase=true}|${logger}${newline}${message}${newline}"/>
        <target name="console" xsi:type="ColoredConsole" layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}"/>
      </targets>
      <rules>
        <logger name="*" minlevel="Debug" writeTo="exceptionFile"/>
        <logger name="*" minlevel="Info" writeTo="console"/>
        <logger name="*" minlevel="Trace" writeTo="console"/>
        <logger name="*" minlevel="Fatal" writeTo="exceptionFile"/>
        <logger name="*" minlevel="Error" writeTo="exceptionFile"/>
        <logger name="*" minlevel="Warn" writeTo="exceptionFile"/>
      </rules>
    < /nlog>

      下面我们一个一个配置节点来说明

      首选说明,NLog的配置文件大小写是敏感的,一定要注意。

    < nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

      命名空间可以配置,也可以不配置。如果配置了命名空间,那么就可以使用VS的智能感知了

    <targets>
        <target name="exceptionFile" xsi:type="File" fileName="${basedir}/Site_Log/${shortdate}/${logger}_${level}.txt" layout="${longdate}|${level:uppercase=true}|${logger}${newline}${message}${newline}"/>
        <target name="console" xsi:type="ColoredConsole" layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}"/>
    </targets>

      定义每种日志记录方式的输出。示例中定义了两种输出方式,分别是File和Console形式,

      name:节点/输出名称

      xsi:type:输出类型

      fileName:日志的文件名

      layout:这是NLog比较出彩的一个特性,布局功能。格式是${}。在括号中可以定义日期、log记录级别、调用程序等上下文信息。既可以规范的命名文件,也可以记录在日志中,方便分析。

    <rules>
        <logger name="*" minlevel="Debug" writeTo="exceptionFile"/>
        <logger name="*" minlevel="Info" writeTo="console"/>
        <logger name="*" minlevel="Trace" writeTo="console"/>
        <logger name="*" minlevel="Fatal" writeTo="exceptionFile"/>
        <logger name="*" minlevel="Error" writeTo="exceptionFile"/>
        <logger name="*" minlevel="Warn" writeTo="exceptionFile"/>
    </rules>

      name:记录日志的名字。可以使用通配符*

      minlevel:记录日志的最低级别,如配置为Debug,那么所有高于等于这个级别的日志都会写到日志文件里。当然也可以指定maxlevel或者单一level,如level=“Debug”,那么只记录Debug级别的信息。也可以指定levels,格式为levels=“Debug,Info”。

      writeTo:写入的目标日志文件

      配置文件就这么多,接下来就应该是程序调用了,声明一个公共变量,如下 

    public static Logger logger = LogManager.GetCurrentClassLogger();

      在该类的方法中使用

    logger.Info("我是EddyPeng,感谢阅读!")

      好了,NLog的简单应用就到这里,相信如果只是简单的使用,这篇文章应该就已经足够了。如果有更深入的学习需求,可以移步以下两个地址

    http://www.cnblogs.com/dflying/category/78087.html

    http://nlog-project.org/wiki

  • 相关阅读:
    Azure Functions(一)什么是 ServerLess
    Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
    Azure Terraform(六)Common Module
    Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
    Azure Terraform(四)状态文件存储
    Java | zuul 1.x 是如何实现请求转发的
    Go | Go 结合 Consul 实现动态反向代理
    Java | 在 Java 中执行动态表达式语句: 前中后缀、Ognl、SpEL、Groovy、Jexl3
    宝,我今天CR了,C的什么R? 走过场的CR
    被监控轰炸了,不得不使出绝招
  • 原文地址:https://www.cnblogs.com/EddyPeng/p/2653634.html
Copyright © 2020-2023  润新知