zoukankan      html  css  js  c++  java
  • .Net -- NLog日志框架配置与使用

    NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台,NLog可将日志写入多个目标,比如Database、File、Console、Mail。下面介绍下NLog的基本使用方法。

    使用步骤

    添加引用

    安装NLog Nuget package:Install-Package NLog.Config;

    添加配置文件
    1. 在项目中添加一个配置文件(也可以直接将NLog的配置项目放入*.exe.config中),重命名为NLog.config;
    2. 更改如下两项属性内容:
    • 复制到输出目录 - 如果较新则复制
    • 生成操作 - 内容
    1. 添加配置内容,下面展示的是GitHub上的示例配置:
    <?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="logfile" xsi:type="File" fileName="file.txt" />
            <!-- 输出到控制台 -->
            <target name="logconsole" xsi:type="Console" />
        </targets>
    
        <!-- 定义输出规则,可配置多个 -->
        <rules>
            <logger name="*" minlevel="Info" writeTo="logconsole" />
            <logger name="*" minlevel="Debug" writeTo="logfile" />
        </rules>
    </nlog>
    
    1. 创建Logger类,获取NLog.Logger实例:
    public class Log
    {
        // ...
        private static readonly NLog.Logger Logger = 
            NLog.LogManager.GetCurrentClassLogger();
    }
    

    配置示例

    如下配置为本人常用配置,可参考该配置及GitHub指导文档自定义配置:

    注意:首次使用NLog时,可先将throwExceptions置为true,这样如果配置有问题没有成功打印日志,VS会抛出异常,方便定位原因。调试好后,再将该项置为false。

    另外:示例中fileName(日志文件全路径名称)是通过后台代码配置的,这样可以动态设置日志的输出位置。

    // NLog.config
    <?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"
          throwExceptions="false" autoReload="true" async="true" encoding="UTF-8">
    
      <targets>
        <target name="logconsole" xsi:type="Console" 
                layout="${date:format=HH:mm:ss} | ${level:padding=-5} | ${message}"/>
        <target name="logfile" xsi:type="File" createDirs="true" keepFileOpen="true"
                fileName="${gdc:logDirectory:whenEmpty=${baseDir}}/logs/${shortdate}/Whiteboard.log"
                archiveFileName="${gdc:logDirectory:whenEmpty=${baseDir}}/logs/${shortdate}/Whiteboard_{##}.log"
                archiveAboveSize="102400" archiveNumbering="Sequence" maxArchiveFiles="31"
                layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}}"/>
      </targets>
    
      <rules>
        <logger name="*" minlevel="Debug" writeTo="logconsole"/>
        <logger name="*" minlevel="Debug" writeTo="logfile" />
      </rules>
    </nlog>
    
    // Log.cs 设置日志文件输出位置
    string logDir = Path.Combine(Environment.GetFolderPath(
        Environment.SpecialFolder.LocalApplicationData),
        Process.GetCurrentProcess().ProcessName);
    NLog.GlobalDiagnosticsContext.Set("logDirectory", logDir);
    
    转载请注明出处,欢迎交流。
  • 相关阅读:
    angular组件开发
    APICloud案例源码、模块源码、考试源码、开发工具大集合!赶快收藏
    Vue-router实现单页面应用在没有登录情况下,自动跳转到登录页面
    原生js实现架子鼓特效
    A Beginner’s Introduction to CSS Animation中文版
    react开发教程(三)组件的构建
    体验javascript之美第五课 五分钟彻底明白 匿名函数自执行和闭包
    这些例子很炫,感兴趣的童鞋可以了解一下
    体验javascript之美6:如果你觉得什么都会了或者不知道js学什么了看这里-面向对象编程
    傅里叶变换,小波变换,EMD,HHT,VMD(经典和现代信号处理方法基本原理概念)
  • 原文地址:https://www.cnblogs.com/louzixl/p/14428244.html
Copyright © 2011-2022 走看看