.NET中使用NLog记录日志

以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂。下面小编就和大伙分享一下NLog的使用方式:

引用NLog.Config

在使用NLog之前,我们要首先添加对NLog.Config的引用,这里小编使用NuGet来添加引用,在安装NLog.Config时会同时安装NLog.Schema和NLog包

输出日志
//实例化Logger对象,默认logger的名称是当前类的名称(包括类所在的命名空间名称)
Logger logger = LogManager.GetCurrentClassLogger();
//两种记录日志的方式
logger.Log(LogLevel.Warn, "warning");
//Info方法表示日志级别是Info
logger.Info(() => "record logger info");
配置NLog

只有代码是不够的,要想让代码发挥作用还要进行相关配置。我们在添加NLog.Config包后,项目中会自动添加一个名为NLog.config的文件,针对NLog的配置就写在该文件中。

<targets>
    <!--xsi:type表示日志的输出方式,File表示将日志写到文件中-->
    <target name="logfile" xsi:type="File"  fileName="日志文件全名"/>
    <!--xsi:type="Console"表示将日志信息打印到控制台上-->
    <target name="logConsole" xsi:type="Console"/>
</targets>

<rules>
    <logger name="*" minlevel="Info" writeTo="logfile"/>
    <!--name指的是程序代码中logger对象的名字,writeTo的值是配置文件中target的名字-->
    <logger name="Test.Program" minlevel="Debug" writeTo="logConsole"/>
</rules>
日志在控制台上输出结果
滚动日志

当需要记录大量的日志信息时,若将日志信息都写入同一个文件中显然是不合适的,创建大量的日志文件来记录日志信息也是没有必要的。这时我们可以使用滚动日志的形式来记录日志信息。NLog中滚动日志的配置如下:

<target name="logfile" xsi:type="File"
<!--主日志文件路径,${basedir}表示当前应用程序域所在的根目录-->
fileName="${basedir}\Logs\log.txt"              
<!--archiveFileName表示滚动日志存放路径,log.{#####}.txt是滚动日志文件名-->
archiveFileName="${basedir}\Archives\log.{#####}.txt"
      <!--每个日志文件大小的最大值(单位:字节),主日志文件超过大小超过该值时会将文件内容写入滚动日志并清空主日志文件内容-->
       archiveAboveSize="1024"
       archiveNumbering="Rolling"
       concurrentWrites="true"
       <!--滚动日志文件上限数,滚动日志文件数达到上限新的文件内容会覆盖旧文件内容 -->
       maxArchiveFiles="2"
       keepFileOpen="false" />
存放日志目录结构

Archives文件夹中的滚动日志

滚动日志的更过配置方法可参考文章File target

日志文件格式配置

默认的日志输出格式是:时间|日志级别|Logger对象名|日志内容
我们可以使用target标签的layout属性来自定义日志输出格式。

<target name="logfile" xsi:type="File" fileName="file.txt" 
layout="${date:format=yyyyMMddHHmmss} ${message}" />
使用自定义格式输出日志内容

另一种方式:

<target xsi:type="File" name="globalErrorLog" fileName="${basedir}\App_Data\Logs\log.txt"
     layout="${longdate}${newline}${message}${exception}${newline}----------${level} | ${logger}----------${newline}"
/>

日志输出格式如下:


日志输出格式

至于其它的格式,各位读者可根据自己的需要来具体设定。

结语

日志可以帮助我们更好的调试程序,当系统出现问题时,我们可以通过日志来快速的定位到问题所在,因此在开发中日志的记录十分重要。这里小编仅仅总结了使用NLog记录日志的简单用法,至于NLog的更多使用方式有兴趣的读者可以查看NLog官网的相关文档。

参考文章:

Tutorial
Custom target
Configuration API
Configuration file
File target
Layout Renderers
FileTarget Header and Footer

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,037评论 0 6
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,680评论 25 708
  • 过年后又恢复了2周1本书的阅读节奏,这个月重新读了《Rewrok》 收获如下 1、失败是成功之母,是个伪命题,有的...
    沧桑过客阅读 369评论 0 0