NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。
NLog虽然没有log4net框架的流行程度高,但是它的跨平台性、开源持续维护性、性能等方面优于log4net,具体可以看下面这篇文章:
日志框架对比 NLog VS Log4net - fengrui - 博客园
.Net Core程序记录日志到文本文件中,下面用代码来演示如何实现:
基于.Net Core WebApi 3.1程序,项目结构如下图:
1.NuGet应用程序集:NLog
2.在项目的根目录下创建配置文件nlog.config
<?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"><!--输出目标,往哪里输出--><targets><!--type:日志输出类型 File:文件 ColoredConsole:控制台--><!--fileName:日志存储的路径及名称--><!--layout:日志输出格式--><target name="log_file" xsi:type="File"fileName="${basedir}/Logs/${shortdate}/${shortdate}.txt"layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring}"archiveFileName="${basedir}/archives/${shortdate}-{#####}.txt"archiveAboveSize="102400"archiveNumbering="Sequence"concurrentWrites="true"keepFileOpen="false" /><!--<target name="console" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" />--></targets><!--定义使用哪个target输出--><rules><logger name="*" minlevel="Trace" writeTo="log_file" /><!--<logger name="*" minlevel="Debug" writeTo="console" />--></rules>
</nlog>
并设置该文件为始终复制,确保改动配置文件实时生效。
3.项目中记录日志信息
using Microsoft.AspNetCore.Mvc;
using NLog;namespace NLogProject.Controllers
{[ApiController][Route("[controller]")]public class WeatherForecastController : ControllerBase{private readonly Logger _logger = LogManager.GetCurrentClassLogger();[HttpGet]public void Get(){_logger.Trace("我是Nlog输出的Trace信息");_logger.Debug("我是Nlog输出的Debug信息");_logger.Info("我是Nlog输出的Info信息");_logger.Warn("我是Nlog输出的Warn信息");_logger.Error("我是Nlog输出的Error信息");_logger.Fatal("我是Nlog输出的Fatal信息");}}
}
程序执行后,默认会在项目的文件夹中生成对应日期的日志文件
日志文件信息: