1.相关概念
2.入门示例
(1)新建一个控制台项目,添加NLog到项目中
说明:示例用的是vs2015,添加上图NLog和NLog.Config。我这面先添加NLog再添加NLog.Config文件时会报错,而直接添加NLog.Config时会自动把NLog也添加。
(2)修改NLog.Config的属性如下
(3)修改NLog.Config配置文件如下
<target name="console" xsi:type="ColoredConsole" layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}" /> <target name="file" xsi:type="File" fileName="${basedir}/logs/file.txt" layout="${stacktrace} ${message}" />
<rules> <!-- add your logging rules here --> <logger name="*" minlevel="Info" writeTo="console" /> <logger name="*" minlevel="Trace" writeTo="file" /> <!-- Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f" <logger name="*" minlevel="Debug" writeTo="f" /> --> </rules>
说明:配置了两条路由规则,使消息分别记录到根目录下的file文件中,和输出到控制台
(4)program类代码如下
namespace NLogTest { class Program { public static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); //创建一个Logger类的实例,它表示与当前类关联的日志消息的来源。 static void C() { logger.Info("Info CCC"); } static void B() { logger.Trace("Trace BBB"); logger.Debug("Debug BBB"); logger.Info("Info BBB"); C(); logger.Warn("Warn BBB"); logger.Error("Error BBB"); logger.Fatal("Fatal BBB"); } static void A() { logger.Trace("Trace AAA"); logger.Debug("Debug AAA"); logger.Info("Info AAA"); B(); logger.Warn("Warn AAA"); logger.Error("Error AAA"); logger.Fatal("Fatal AAA"); } static void Main(string[] args) { logger.Trace("This is a Trace message"); logger.Debug("This is a Debug message"); logger.Info("This is an Info message"); A(); logger.Warn("This is a Warn message"); logger.Error("This is an Error message"); logger.Fatal("This is a Fatal error message"); Console.ReadKey(); } } }
(5)运行结果如下
说明:
Trace
和Debug
消息只记录在文件中,控制台上不显示
(6)相关配置说明
A.<targets />
部分定义了日志目标/输出
name 目标名称
type 目标类型 - 例如“ File
”,“ Database
”,“ Mail
”
layout 指定输出文件内容的样式(可自由定义)
filename 指定输出文件的具体位置和名称
B. <rules />
节中定义了路由规则
name
- 源/记录器名称(可能包含通配符*)
minlevel
- 此规则匹配的最小日志级别
maxlevel
- 此规则匹配的最大日志级别
level
- 此规则匹配的单个日志级别
levels
- 用于匹配此规则的逗号分隔的日志级别列表
writeTo
- 此规则匹配时应写入的逗号分隔列表
final
- 使这个规则最终。当任何最终规则匹配时,不会处理进一步的规则
(7)参考学习地址: https://www.codeproject.com/Articles/10631/Introduction-to-NLog