NLog是什么
NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。
NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。
NLog的API非常类似于log4net,且配置方式非常简单。NLog使用路由表(routing table)进行配置,这样就让NLog的配置文件非常容易阅读,并便于今后维护。
NLog遵从BSD license,即允许商业应用且完全开放源代码。任何人都可以免费使用并对其进行测试,然后通过邮件列表反馈问题以及建议。
NLog支持.NET、C/C++以及COM interop API,因此我们的程序、组件、包括用C++/COM 编写的遗留模块都可以通过同一个路由引擎将信息发送至NLog中。
简单来说Nlog就是用来记录项目日志的组件
NLog日志输出目标
文件 比如TXT、Excel
文本控制台
Email
数据库
网络中的其它计算机(通过TCP或UDP)
基于MSMQ的消息队列
Windows系统日志
NLog使用
直接用NuGet安装就行了
简单的Demo
<?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" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="false" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <variable name="myvar" value="myvalue"/> <targets> <target xsi:type="File" name="SimpleDemoFile" fileName="../../../Logs/SimpleDemo.txt" layout="${message}" encoding="UTF-8"/> </targets> <rules> <logger name="SimpleDemo" level="Error" writeTo="SimpleDemoFile"/> </rules> </nlog>
using NLog; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2017011301SimpleDemo { class Program { public static Logger logger = LogManager.GetLogger("SimpleDemo"); static void Main(string[] args) { Console.WriteLine("执行开始"); logger.Error("Hello World"); Console.WriteLine("执行结束"); Console.ReadKey(); } } }
输出到 ../../../Logs/SimpleDemo.txt 内容为 Hello World
NLog配置
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off“
internalLogFile="c:\temp\nlog-internal.log">
<variable name="myvar" value="myvalue"/>
<targets> </targets>
<rules> </rules>
</nlog>
xmlns=“http://www.nlog-project.org/schemas/NLog.xsd” 这表示默认命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 这个命名空间里面的元素或者属性就必须要以xsi:这种方式来写
比如schemaLocation就是他的一个属性,所以写成xsi:schemaLocation
而默认命名空间不带类似xsi这种,其实xml标签名称有个专业叫法叫做QName,而如果没有前面的xsi:这种一般叫做NCName
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
表示把定义这个命名空间的schema文件给引用进来,好让开发类型工具能够解析和验证你的xml文件是否符合语法规范
等同于
简单来说 上面是用来验证你XML格式是否正确的。
InternalLogFile="c:\log\nlog.txt" //NLog内部日志文件位置
internalLogLevel="Debug" //日志级别
autoReload:一旦启动程序,这时候NLog.config文件被读取后,知道程序再启动都不会再读取配置文件了。假如我们不想停掉程序,比如说服务器哪能说停就停哈。这就用上这个配置了,这个配置功能是,一旦你对配置文件修改,程序将会重新读取配置文件,也就是自动再配置。
throwExceptions//NLog日志系统抛出异常
internalLogFile="c:\log\nlog.txt" //NLog内部日志文件位置
internalLogLevel="Debug" //日志级别
<variable /> - 定义配置文件中用到的变量
<targets /> - 定义日志的目标/输出
<rules /> - 定义日志的路由规则
Layout布局
几种常见的
${var:basePath} basePath是前面自定义的变量
${longdate} 日期格式 2017-01-17 16:58:03.8667
${shortdate}日期格式 2017-01-17
${date:yyyyMMddHHmmssFFF} 日期 20170117165803866
${message} 输出内容
${guid} guid
${level}日志记录的等级
${logger} 配置的logger
NLog记录等级
Trace - 最常见的记录信息,一般用于普通输出
Debug - 同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序
Info - 信息类型的消息
Warn - 警告信息,一般用于比较重要的场合
Error - 错误信息
Fatal - 致命异常信息。一般来讲,发生致命异常之后程序将无法继续执行。
自上而下,等级递增。
NLog等级使用
指定特定等级 如:level="Warn"
指定多个等级 如:levels=“Warn,Debug“ 以逗号隔开
指定等级范围 如:minlevel="Warn" maxlevel="Error"
Logger使用
从配置文件读取信息并初始化 两种常用的方式
根据配置的路由名获生成特定的logger Logger logger = LogManager.GetLogger("LoggerDemo");
初始化为当前命名空间下当前类的logger Logger logger = LogManager.GetCurrentClassLogger();
区别是logger的name不一样 前者是LoggerDemo,后者是当前命名空间+点+当前类名 如类比较多,并且往同一个日志文件记录,建议用GetCurrentClassLogger
Logger有以下三种常用的写入方式
logger.Error("这是DatabaseDemo的错误信息");
logger.Error(“ContentDemo {0}:{1}”,“时间”,DateTime.Now.ToString());需要拼接字符串的话推荐这种,NLog做了延迟处理,用的时候才拼接。
logger.Log(LogLevel.Error, "这是ContentDemo");
Logger发邮件参数
smtpServer=“*****” 邮件服务器 例如126邮箱是smtp.126.com
smtpPort=“25“端口
smtpAuthentication=“Basic“ 身份验证方式 基本
smtpUserName=“*****“ 邮件服务器用户名
smtpPassword=“******”邮件服务器密码
enableSsl=“false”是否使用安全连接 需要服务器支持
addNewLines=“true” 开头与结尾是否换行
from=“****” 发件邮箱
to=“XXXX@XX.com,XXXXX@XX.com”收件邮箱 多个以逗号分隔
subject=“subject:${machinename}报错“ 邮件主题
header=“---------------------开头-------------------------“ 邮件开头
body=“${newline}${message}${newline}“ 邮件内容
footer=“---------------------结尾-------------------------“ 邮件结尾
<?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" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="true" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <!-- optional, add some variables https://github.com/nlog/NLog/wiki/Configuration-file#variables --> <variable name="basePath" value="C:\Users\Zachary\Desktop\练习\20170113NLog\Logs\"/> <targets> <target xsi:type="Mail" name="SendMail" smtpServer="你的邮件服务器" smtpPort="你的邮件服务器端口" smtpAuthentication="Basic" smtpUserName="你的邮件服务器名" smtpPassword="你的邮件服务器密码" enableSsl="false" addNewLines="false" from="你的发件邮箱" to="你的收件邮箱" subject="subject:${machinename}报错" header="---------------------开头-------------------------" body="${newline}${message}${newline}" footer="---------------------结尾-------------------------" encoding="UTF-8"/> </targets> <rules> <logger name="*" level="Error" writeTo="SendMail"></logger> </rules> </nlog>
Logger写入数据库参数
<target xsi:type="Database"
name="DatabaseFile"
dbProvider=“System.Data.SqlClient”数据库类型
commandText=“Insert into ErrorLog(ID, Content, CreateTime) Values(@id, @content, @createTime);”插入操作
connectionString=“data source=.;initial catalog=NLog;user id=sa;password=******;”> 数据库连接字符串 跟我们webcofig中的一样
<parameter name=“@id” layout=“${guid}” /> 参数
<parameter name="@content" layout="${message}" />
<parameter name="@createTime" layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff} " />
</target>
需在数据库里提前建好表
<?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" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="true" internalLogLevel="Off" internalLogFile="../../../Logs/nlog-internal.log"> <targets> <target xsi:type="Database" name="DatabaseFile" dbProvider="System.Data.SqlClient" commandText="Insert into ErrorLog(ID, Content, CreateTime) Values(@id, @content, @createTime);" connectionString="data source=.;initial catalog=NLog;user id=sa;password=你的数据库密码;"> <parameter name="@id" layout="${guid}" /> <parameter name="@content" layout="${message}" /> <parameter name="@createTime" layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff} " /> </target> </targets> <rules> <logger name="Database" level="Error" writeTo="DatabaseFile"/> </rules> </nlog>
NLog.config可以单独放,也可以放在WebConfig里。
在configuration配置
<configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> </configSections>
然后把NLog.config里面放在后面就行了。
<configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> </configSections> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="true" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <variable name="myvar" value="myvalue"/> <targets async="false"> <target xsi:type="File" name="WebDemoFile" fileName="C:\Users\Zachary\Desktop\练习\20170113NLog\Logs\${date:yyyyMMddHHmm}WebDemo.txt" layout="${longdate} ${message}" encoding="UTF-8"/> </targets> <rules> <logger name="WebDemo" level="Error" writeTo="WebDemoFile"/> </rules> </nlog> </configuration>
相关推荐
本文将详细介绍NLog的使用方法以及如何配置文件,帮助你更好地理解和应用这一工具。 首先,让我们了解NLog的基本概念。NLog提供了一个简单的方式来记录应用程序中的事件,如错误、警告和信息,这些事件可以被写入到...
下面将详细介绍NLog的主要特性、使用方法以及如何在项目中集成NLog v4.7.11。 **NLog的主要特性:** 1. **灵活性**:NLog支持多种日志目标,如文件、控制台、数据库、电子邮件等,可以根据不同的需求配置不同的...
本篇将详细介绍如何在C#项目中使用NLog进行日志记录。 首先,我们需要引入NLog库。如果你的项目是.NET Core或.NET Standard,可以通过NuGet包管理器安装NLog及其依赖项;如果是.NET Framework项目,可以使用NuGet或...
本篇将详细介绍NLog的配置和使用实例。 首先,要在项目中引入NLog,需要通过NuGet包管理器安装NLog包。在Visual Studio中,可以通过右键点击项目 -> 管理NuGet程序包 -> 搜索NLog -> 安装NLog来完成添加。 接下来...
在本文中,我们将详细介绍如何使用NLog在Asp.Net Core中进行日志记录,并满足特定需求。 需求分析: 1. 自动写入日志到数据库和文件:NLog允许配置多个目标(Targets),如文件和数据库,以实现日志的多渠道记录。 ...
以上就是关于NLog的基本介绍,通过它,开发者可以方便地集成日志功能,提升.NET应用程序的维护性和稳定性。NLog的灵活性、可扩展性和强大的配置能力,使其成为了.NET开发中的首选日志工具之一。
本文主要介绍了ASP.NET Core 开发-Logging 使用NLog 写日志文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 NLog 可以适用于 .NET Core 和 ASP.NET Core 。 ASP.NET Core已经内置...
`nlog.4.4.12.nupkg` 文件是NuGet包,用于方便地在项目中安装和管理NLog依赖,使得在项目中添加、配置和使用NLog变得简单快捷。 2. **Slf4net** Simple Logging Facade for .NET (Slf4net) 是一个轻量级的日志接口...
NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。本文主要介绍的是关于NLog配置的相关内容,下面话不多说了,来一起看看详细的介绍吧 NLog配置 新建一个文件命名为NLog...
本节将重点介绍如何利用NLog v5.0.4版本与SqlSugarCore结合,实现日志的持久化存储。 首先,NLog是一个广泛使用的、高度可配置的日志记录库,支持多种目标(如文件、数据库、控制台等)以及自定义日志格式。它允许...
任何人都可以免费使用并对其进行测试,然后通过邮件列表反馈问题以及建议。 下面话不多说了,来一起看看详细的介绍吧。 步骤 1 在项目的project.json中添加依赖NLog.Extensions.Logging: dependencies: { NLog....
本文介绍如何在使用NLog登录到Microsoft SQL Server的ASP.NET Core应用程序中设置日志记录。 NLog.Web.AspNetCore Nuget包已添加到csproj文件中的依赖项中。 < TargetFramework>...
今天我们要介绍的是一款名为“LogViewer”的开源软件,它专门针对Log4j和NLog这两种广泛使用的日志框架设计,能够帮助开发者和运维人员高效地读取、搜索和过滤日志信息。 LogViewer是一款高效且功能丰富的日志查看...
在C#项目中,使用`SplunkNLogTarget`需要对NLog的配置文件(通常是`nlog.config`)进行修改。首先,需要在`targets`部分添加一个名为`SplunkNLogTarget`的新目标,指定连接信息,如主机地址、端口、hec令牌等。例如...
slf4net项目充当各种日志记录框架(例如log4net和NLog)的轻量级... 如果未配置记录仪工厂,则将使用NOPLogger(无操作记录仪)。 开始记录。 using System ; namespace slf4net . Samples { public class MyClass
本教程将详细介绍如何在WPF应用中集成log4net,以便实现每天生成一个独立日志文件的需求。 首先,我们需要在WPF项目中添加对log4net库的引用。这可以通过NuGet包管理器完成,搜索并安装"log4net"包。安装完成后,...
下面将详细介绍如何在C#中实现串口通信,以及如何利用第三方日志库记录和分析接收到的数据。 首先,我们需要了解串行通信的基本概念。串口通信,也称为串行接口通信,是通过串行数据线逐位传输信息的方式。在C#中,...