nlog官方帮助_NLog简介

安装NLog

asp.net core需要使用另外一个教程

在VS里安装NLog.Config包,这个包会自动安装NLog 包和NLog.Schema包。

NLog.Config包会在vs项目中自动生成一个NLog.config文件。

配置nlog的输出

NLog只会在配置一个(或更多)NLog目标(Target)的情况下产生输出。

NLog可以通过添加一个NLog.config来配置。配置文件到您的应用程序项目(文件属性:总是复制)。这是NLog.config的内容的一个简单示例:

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

下面是编程方式进行配置:

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

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

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

config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);

config.AddRule(LogLevel.Debug, LogLevel.Fatal, logfile);

NLog.LogManager.Configuration = config;

写log消息

Example of how to acquire a logger and writing a message to the logger:

var logger = NLog.LogManager.GetCurrentClassLogger();

logger.Info("Hello World");

log等级

每条日志消息都有相关的日志级别,它可以识别消息的重要性/详细信息。NLog可以根据日志记录器的名称和日志级别来路由日志消息。

NLog支持以下日志级别:

trace - 非常详细的日志,它可能包括大量的信息,例如协议有效负载。这个日志级别通常只在开发期间启用

debug - 调试信息,比跟踪更少,通常在生产环境中不会启用

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

// Example of logging an exception

try

{

}

catch (Exception ex)

{

logger.Error(ex, "ow noos!"); // render the exception with ${exception}

throw;

}

}

}

日志输出信息的格式

可以配置如何将一个消息写入NLog目标

如下是大多数NLog目标所使用的默认简单格式:

下面示例可以显示更多信息:

最佳实践

1. Logger应该是每个类中的静态变量

创建一个新的Logger有开销,因为它必须获得锁和分配对象。因此推荐如下方式创建Logger

namespace MyNamespace

{

public class MyClass

{

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

}

}

2. Logger应该处理字符串格式

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

logger.Info("Hello {0}", "Earth");

3. Logger应该放在异常里处理

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

try

{

}

catch (Exception ex)

{

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

}

4. 从NLog.config验证XML配置

默认情况下,NLog吞下所有异常,所以日志记录的问题不会导致应用程序中断。但是对于很多应用程序来说,日志记录是非常重要的,所以如果初始的NLog配置失败了,那么它就是致命的。

添加throwConfigExceptions="true",当配置出现问题时可以让NLog知道

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

throwConfigExceptions="true">

还有一个throwExceptions="true"的设置,它不应该在生产中使用,因为它会对应用程序造成严重破坏。它用于单元测试和本地故障排除。

参见配置故障排除

5.

NLog在默认情况下会尝试在应用程序关闭时自动刷新。Microsoft Windows.NET应用程序在终止前执行关机(通常是2秒)的时间是有限的。如果有一个NLog以NLog为目标的NLog,需要网络流量(Http、Mail、Tcp),那么在运行linux/windows上独立运行时,这是一个非常好的主意。

NLog.LogManager.Shutdown(); // Flush and close down internal threads and timers

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值