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" 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);

.Net -- NLog日志框架配置与使用的更多相关文章

  1. NLog日志框架使用探究-2

    目录 前言 自定义参数 日志输出方式 文件 网络传输 数据库 科学使用 参考文档 前言 在一年前,我写过一篇关于NLog入门文章<NLog日志框架使用探究-1>,文章简单的介绍了Nlog的 ...

  2. Spring Boot干货系列:(七)默认日志框架配置

    Spring Boot干货系列:(七)默认日志框架配置 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候, ...

  3. Springboot入门-日志框架配置(转载)

    默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台. Logback是log4j框架的作者开发的新一代日志框架,它效率更高.能够适应诸多的运行环境,同时天然支 ...

  4. NLog日志框架使用探究-1

    目录 前言 为什么是NLog? 目的 配置 基本配置 日志等级 输出例子 目标 参数 规则 日志分发 日志收集 结语 参考文档 前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录 ...

  5. SpringBoot整合Logback日志框架配置全解析

    目录 本篇要点 一.Logback日志框架介绍 二.SpringBoot与Logback 1.默认日志格式 2.控制台输出 3.文件输出 4.日志级别 5.日志组 6.自定义log配置 三.logba ...

  6. 日志管理-NLog日志框架简写用法

    本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日志工具,今天介绍下NLog.NLog ...

  7. NLog日志框架简写用法

    本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日志工具,今天介绍下NLog.NLog ...

  8. Nlog 日志框架简单教程

    安装 Nuget获取 配置寻找 会自动寻找在应用程序目录下的NLog.config(大小写敏感) 如何配置config <?xml version="1.0" encodin ...

  9. 在android中使用logback-android日志框架配置 slf4j + logback

    为什么使用 slf4j + logback logbak定位于log4j的替代者,logback同样支持slf4j,方便被替换.在Android平台上,我在使用log4中遇到tag混乱的问题.相比lo ...

随机推荐

  1. Pytest(10)assert断言

    前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed ...

  2. Java程序操作HBase

    package com.zy.test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import ...

  3. 2019牛客暑期多校训练营(第八场)B-Beauty Values(期望线性性)

    >传送门< 题意:思路:期望的线性性(可加性),比赛的时候写的代码超级无敌长,不过值得欣慰的是一发AC了,官方的题解写的还不错~ 我们可以把每种数字对答案的贡献分开来计算,即枚举每个数字, ...

  4. Codeforces Round #529 (Div. 3) C. Powers Of Two (二进制)

    题意:给你一个数\(n\),问是否能有\(k\)个\(2\)次方的数构成,若满足,输出一种合法的情况. 题解:从高到低枚举二进制的每一位,求出\(n\)的二进制的\(1\)的位置放进优先队列中,因为\ ...

  5. 2019-2020 ACM-ICPC Brazil Subregional Programming Contest Problem A Artwork (并查集)

    题意:有一个矩形,有\(k\)个警报器,警报器所在半径\(r\)内不能走,问是否能从左上角走到右下角. 题解:用并查集将所有相交的圆合并,那么不能走的情况如下图所示 所以最后查询判断一下即可. 代码: ...

  6. Kubernets二进制安装(16)之安装部署traefik(ingress)

    K8S的DNS实现了服务在集群"内"被自动发现,如何使得服务在Kuberneters集群"外"被使用和访问呢,有二种方法 1)使用NodePort型的Servi ...

  7. codeforce 849B

    B. Tell Your World time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  8. mybatis(十一)mybatis常见问题

    用注解还是用 xml 配置? 常用注解:@Insert.@Select.@Update.@Delete.@Param.@Results. @Result 在 MyBatis 的工程中,我们有两种配置 ...

  9. Linux 驱动框架---dm9000分析

    前面学习了下Linux下的网络设备驱动程序的框架inux 驱动框架---net驱动框架,感觉知道了一个机器的大致结构还是不太清楚具体的细节处是怎么处理的,所以今天就来以dm9000这个网上教程最多的驱 ...

  10. PyCharm 中文 字符 python 报错 的 完美 解决方案!

    PyCharm 中文 字符 python 报错 的 完美 解决方案! #_*_ coding:utf-8_*_ https://www.python.org/dev/peps/pep-0263/ 到p ...