一、引言
好的框架肯定要有好的日志记录。另外鄙人发现个问题:服务器带域名的项目会报错,而不带域名的和源码执行不报错,因此也要用日志记录下。据说NLog比Log4net效率高。
二、引入NLog插件
编辑
三、配置NLog
3.1 新建一个XML
文件,文件名为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"
autoReload="true"
throwConfigExceptions="true"
internalLogLevel="Off"
internalLogFile="C: empinternal-nlog.txt">
<targets>
<!-- Trace级别日志,输出到html文件 -->
<target xsi:type="File"
name="TraceFile"
fileName="${basedir}/logs/${shortdate}_Trace.html"
layout="【记录时间】:${longdate} <br>
【文名名称】:${logger} <br>
【日志级别】:${uppercase:${level}} <br>
【日志内容】:${message} ${exception} <hr size=2 color=red>" />
</targets>
<rules>
<!-- Microsoft.*表示通配符,所有微软日志将被过滤 -->
<logger name="Microsoft.*" minlevel="Trace" final="true" />
<logger name="*" minlevel="Trace" writeTo="TraceFile" />
</rules>
</nlog>
3.2 引入NLog
的相关组件后,我们需要将NLog
设置为系统的日志管理器,修改Program.cs
文件,代码如下:
添加这2句:
NLogBuilder.ConfigureNLog("nlog.config");
.ConfigureLogging(logging =>
{
logging.ClearProviders();
})
.UseNLog();
总体代码如下:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Yadinghao.Web
{
public class Program
{
public static void Main(string[] args)
{
NLogBuilder.ConfigureNLog("nlog.config");
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).ConfigureLogging(logging =>
{
logging.ClearProviders();
})
.UseNLog();
}
}
四、写日志
在Controller里面在其构造函数中注入ILogger
接口代码:
private IWebHostEnvironment _Environment;
private readonly ILogger<SystemController> _Logger;
#region 构造函数
/// <summary>
/// SystemController的构造函数
/// </summary>
/// <param name="_environment"></param>
/// <param name="_logger"></param>
public SystemController(IWebHostEnvironment _environment, ILogger<SystemController> _logger)
{
_Environment = _environment;
_Logger = _logger;
}
#endregion
编辑配置完成就开始写
编辑
_Logger.LogDebug(currentXmlFileName);
五、成果展示
编辑
很奇怪没写的指定路径
编辑