内容

安装NLog

NLog可以在NuGet中下载.

如果仅仅安装 NLog.Config 包,会一并安装 NLog 和 NLog.Schema 两个包,这将使得启动配置和智能感知。

使用 GUI 或 在程序包管理控制台中使用以下命令Install-Package NLog.Config

好了,你现在可以编译和运行你自己的应用了,它能使用NLog的功能了.

配置NLog输出的Targets

如果配置了一个(或者更多)NLog targets , NLog 仅会产出对应项.

NLog 可以使用一个 NLog.config 的 XML 配置文件去配置你的应用程序(文件的属性需修改为:始终复制),下面是一个简单 NLog.config 配置内容.

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

注: 其中 targets 表示写入的方式,上方 logfile 表示使用txt文件的方式记录,logconsole 表示在控制台中记录(在控制台中直接输出),rules 表示写入方式对应的规则

也可以使用代码的方式进行配置,例如如下的代码:

var config = new NLog.Config.LoggingConfiguration();

var logfile = new NLog.Targets.FileTarget() { FileName = "file.txt", Name = "logfile" };

var logconsole = new NLog.Targets.ConsoleTarget() { Name = "logconsole" };

config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Info, logconsole));

config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Debug, logfile));

NLog.LogManager.Configuration = config;

写入日志信息

如何获取记录器并向日志记录器写入消息的示例:

var logger = NLog.LogManager.GetCurrentClassLogger();

logger.Info("Hello World");

如果已经正确的配置了NLog targets,上面的代码会输出信息到配置的targets中.

logger 有一个name,它可以在logging-rules(参见上面的配置示例中的name="*")用于重定向到需要的targets。

当使用 NLog.LogManager.GetCurrentClassLogger() 时,它会创建一个名字为调用类名称(包括命名空间)的 logger .还可以通过使用指定一个显式名称. NLog.LogManager.GetLogger("MyLogger").

logger 可以使用不同的 LogLevels ,它可以在logging-rules(参见上面的配置示例中的 minLevel)配置,用户有相关的信息被重定向到 targets 中:

logger 没有绑定到特定的目标。写入到一个logger 的消息可以根据logging-rules中配置,从而可以写入到多个目标中。保持这种分离可以让你在代码中保留日志记录,并且可以通过在一个地方更新配置来轻松地更改日志的编写方式和位置。还可以查看过滤日志消息。

日志等级

每一个记录的信息都有一个对应的日志等级,表示这个记录信息的重要程度或详细程度。NLog 可以根据日志消息的名称和日志级别来路由日志消息。

NLog 支持以下的 记录日志等级:Trace - 非常详细的日志,包含最详尽的信息,例如协议的有效载荷. 该日志等级通常仅在开发过程中被使用;

Debug - 调试信息,详尽信息次于 Trace ,在生产环境中通常不启用;

Info - 信息消息, 通常在生产环境中通常启用;

Warn - 警告信息,通常用于非关键问题,这些问题可以恢复,或者是暂时的故障;

Error - 错误信息 - 多数情况下记录Exceptions(异常)信息;

Fatal - 非常严重的错误!

public class MyClass

{

private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

public void MyMethod1()

{

logger.Trace("Sample trace message");

logger.Debug("Sample debug message");

logger.Info("Sample informational message");

logger.Warn("Sample warning message");

logger.Error("Sample error message");

logger.Fatal("Sample fatal error message");

// alternatively you can call the Log() method

// and pass log level as the parameter.

logger.Log(LogLevel.Info, "Sample informational message");

}

}

布局和布局渲染器

布局和布局渲染器 可以配置日志消息如何写入NLog targets.

下面展示了一个大多数 NLog targets 使用的简单布局方式 SimpleLayout :

也可以进行相应的配置,以获取更详尽的信息:

你也可以使用更复杂的布局,而不是简单的布局:

更详尽信息,参考: Layouts

日志最佳实践每个类中,Logger 应该被设置成一个静态变量

每创建一个 Logger 都会有一定的性能损耗,因为它必须获取锁和分配对象

因此建议像这样创建logger:

namespace MyNamespace

{

public class MyClass

{

private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

}

}

Logger 应该处理字符串格式化

避免预先执行字符串分配或字符串连接,而是让日志记录器执行格式化。这将允许NLog推迟格式化并减少开销。

因此,建议您这样执行日志:

logger.Info("Hello {0}", "Earth");Logger 应该记录异常

避免将异常作为格式化参数,而是将其显式地作为第一个参数提供。这将帮助NLog目标提供更好的日志记录。

try

{

}

catch (Exception ex)

{

logger.Error(ex, "Something bad happened");

}

从 NLog.config XML配置文件中验证配置

默认情况下,NLog 允许记录所有异常,因此,日志记录的问题不会导致应用程序中断。但是为更多的应用程序记录日志是至关重要的,所以如果 NLog 配置文件的实例错误,那将是致命的.

增加 throwConfigExceptions="true" 会使 NLog 在配置文件错误的情况下抛出异常:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

throwConfigExceptions="true">

类似的有 throwExceptions="true", 但它不能在生产环境中使用,因为它会对应用程序造成破坏. 它被设计用在单元测试、本地故障排除中.详见Troubleshooting ConfigurationRemember to Flush

当应用停止运行时,NLog 默认会自动尝试刷新. Microsoft Windows 给.Net应用程序在被终止前执行关机(通常是2秒)的时间。如果一个 NLog配置了需要网络传输的 NLog Tagets (Http、Mail、Tcp)运行在Linux/Windows,那么执行一个手动的 Flush/Shutdown 是一个明智之举.

NLog.LogManager.Shutdown(); // 刷新并关闭内部线程和计时器。

运行在Mono/Linux 的 .NET 应用在进入应用程序关闭阶段前,必需去停止线程和计时器. 如果未执行完成会导致未处理的异常和分割错误,以及其他不可预知的行为。

封装器

NLog 支持特殊类型的 targets ,这些类自己本身不做任何日志记录,但是会修改其它 loggers 的行为. 这些loggers被称为封装器. 一般常用的是:AsyncWrapper - 提供异步方式缓冲执行目标写入,可以提高性能;

BufferingWrapper - 简单批处理日志信息. 可能仅在某些日志事件发生时才发送批处理(例如 异常信息);

AsyncWrapper 提供一个便捷的快捷设置方式,在配置文件中添加 async="true" 即可:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

这样设置之后,所有写入文件的日志将以异步的方式,可以提高调用线程的响应能力。

参考资料:

nlog官方帮助_NLog教程相关推荐

  1. nlog官方帮助_Nlog

    参考资料:ASP.NET 上传文件到共享文件夹 创建共享文件夹参考资料:https://www.cnblogs.com/dansediao/p/5712657.html 一.配置上传文件相关参数并读取 ...

  2. nlog官方帮助_NLog简介

    安装NLog asp.net core需要使用另外一个教程 在VS里安装NLog.Config包,这个包会自动安装NLog 包和NLog.Schema包. NLog.Config包会在vs项目中自动生 ...

  3. nlog官方帮助_Nlog日志组件简介

    NLog简介 NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net,配置方式非常简单.支持多种形式输出日志:文本文件.系统日志.数据库.控制台.邮箱等 1.NLog简 ...

  4. nlog官方帮助_NLog类库使用探索——详解配置

    https://www.cnblogs.com/fuchongjundream/p/3936431.html 1 配置文件的位置(Configuration file locations) 通过在启动 ...

  5. nlog官方帮助_NLog使用方法

    一.软件网站:http://www.nlog-project.org/ 下载:http://sourceforge.net/project/showfiles.php?group_id=116456 ...

  6. nlog官方帮助_NLog使用说明

    NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码. NLog允许我们自定义从跟踪消息的来源(source)到记录跟踪信息的目标(target)的规则 ...

  7. ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布

    ActiveReports 报表控件官方中文入门教程 (2)-创建.数据源.浏览以及发布 原文:ActiveReports 报表控件官方中文入门教程 (2)-创建.数据源.浏览以及发布 本篇文章将阐述 ...

  8. ActiveReports 报表控件官方中文新手教程 (1)-安装、激活以及产品资源

     本系列文章主要是面向初次接触 ActiveReports 产品的用户,能够帮助您在三天之内轻松的掌握ActiveReports控件的基本用法,包含安装.激活.创建报表.绑定数据源以及公布等内容. ...

  9. 微软官方上线 Python 教程

    我们上次报道过,微软官方上线 Python 教程文档.最近微软针对 Python 初学者,推出了一套免费的教程视频. 这套视频名为 Python for Beginners,该在线教学视频由微软高级项 ...

最新文章

  1. 服务器自动post,jquery ajax $.post自动变GET的解决方式(for CI)
  2. 服务器内存使用率高找不到是哪个进程,内存占用率高,但是找不到内存消耗大的程序...
  3. 基础回顾(Map、==/equals()/hashcode())
  4. efcore 实体配置_创建并配置模型
  5. iOS项目开发优秀文章汇总
  6. onenetsim定位功能吗_经常玩手机的抓紧看看,原来手机键盘还隐藏4个实用功能,真实用...
  7. OpenStack精华问答 | OpenStack是云吗?
  8. python测量镜头到目标距离_摄像头单目测距原理及实现
  9. span 超出部分换行
  10. ncl批量处理多个nc文件_Python办公自动化批量处理文件,一学就会
  11. 如何修改一个类的私有成员?
  12. ajax1—php(27)
  13. 吴恩达教授机器学习课程笔记【四】- 生成学习算法(1)高斯判别分析模型
  14. cf378D(stl模拟)
  15. admin is not in the sudoers file. This incident will be reported
  16. 收据模板 纯css+html
  17. 制作ppt时如何使logo背景变成透明
  18. vue-element-admin的二次开发
  19. PeopleSoft 登录页面更换
  20. Kali--社会工程学工具-social engineering toolkit(SET)

热门文章

  1. 我们不做看客,只做时代的赋能者 —FMI2018人工智能与大数据高峰论坛深圳场圆满落幕...
  2. C# 实用的第三方库
  3. videoJS 播放 u3m8 格式视频Demo
  4. ABB机器人教程 (2)RobotStudio学习
  5. 宜昌天问2021高中高考成绩查询,喜报 丨 高考,梦想之花在天问高中盛开
  6. 计算机的声音图标打不开怎么回事,w7 64位电脑声音的小喇叭点不开怎么办
  7. StrictMode使用
  8. 75种手绘涂鸦箭头指示动画AE模板 Doodle Arrow Pack
  9. 2023年春节跨年烟花网页特效
  10. Django web框架学习之旅(4)