.Net -- NLog日志框架配置与使用

louzi 2021/2/22 16:10:59

NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台,NLog可将日志写入多个目标,比如Database、File、Console、Mail。下面介绍下NLog的基本使用方法。使用步骤添加引用安装NLog Nuget package:Install-Package NLog.Config;添加配置文件在项目中添加…

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

使用步骤

添加引用

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

添加配置文件
  1. 在项目中添加一个配置文件(也可以直接将NLog的配置项目放入*.exe.config中),重命名为NLog.config;
  2. 更改如下两项属性内容:

    • 复制到输出目录 - 如果较新则复制
    • 生成操作 - 内容
  3. 添加配置内容,下面展示的是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" maxArchiveDays="30"
            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);
随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[.Net -- NLog日志框架配置与使用]http://www.zyiz.net/tech/detail-152023.html

上一篇:在.NET中使用Apache Kafka(一)

下一篇:应用界面开发小技巧 - 如何在覆盖表单上显示自定义按钮

赞(0)

共有 条评论 网友评论

验证码: 看不清楚?
    关注微信小程序
    程序员编程王-随时随地学编程

    扫描二维码或查找【程序员编程王】

    可以随时随地学编程啦!

    技术文章导航 更多>
    扫一扫关注最新编程教程