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);
    
    转载请注明出处,欢迎交流。
  • 相关阅读:
    Js获取或计算时间的相关操作
    SqlServer删除表中重复的记录并保留一条
    获取js文件后的参数
    谷歌浏览器官方下载地址
    ionic项目中实现发短信和打电话
    ui-router传递参数
    ng-options用法详解
    html5 localStorage(本地存储)
    cordova插件之Local Notification(本地通知)
    AngularJS $http service
  • 原文地址:https://www.cnblogs.com/louzixl/p/14428244.html
Copyright © 2011-2022 走看看