.net core 3.1 添加 Nlog日志
交流QQ群:555913397
有什么问题可以加群大家一起交流
1.添加Nuget程序包
1.1 NLog
1.2 NLog.Web.AspNetCore
2.创建Nlog配置文件
2.1创建的文件名称为 nlog.config (ps:也可以自定义其他名字,加载配置文件时修改为自定义的名称即可)
2.2 下面配置文件打印出来的效果如下图

<?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" internalLogLevel="Info">
<!-- 启用.net core的核心布局渲染器 -->
<extensions>
<add assembly="NLog.Web.AspNetCore" />
</extensions>
<!-- 写入日志的目标配置 -->
<targets>
<!-- 调试 -->
<target xsi:type="File" name="debug" fileName="logs/debug-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<!-- 警告 -->
<target xsi:type="File" name="warn" fileName="logs/warn-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<!-- 错误 -->
<target xsi:type="File" name="error" fileName="logs/error-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
</targets>
<!-- 映射规则 -->
<rules>
<!-- 调试 -->
<logger name="*" minlevel="Trace" maxlevel="Debug" writeTo="debug" />
<!--跳过不重要的微软日志-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<!-- 警告 -->
<logger name="*" minlevel="Info" maxlevel="Warn" writeTo="warn" />
<!-- 错误 -->
<logger name="*" minlevel="Error" maxlevel="Fatal" writeTo="error" />
</rules>
</nlog>
3.Program.cs 添加Nlog
public static void Main(string[] args)
{
//这里添加Nlog
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
//测试Nlog日志输出
logger.Debug("init main");
CreateHostBuilder(args).Build().Run();
}
catch (Exception exception)
{
logger.Error(exception, "Stopped program because of exception");
throw;
}
finally
{
NLog.LogManager.Shutdown();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
//使用Nlog
.UseNLog()
//添加Autofac容器
.UseServiceProviderFactory(new AutofacServiceProviderFactory());
}
4.在控制器通过构造方法注入实现写日志功能
public class HomeController : Controller
{
//Nlog构造方法注入
private readonly ILogger<HomeController> _logger;
private readonly IPeople _people;
public HomeController(ILogger<HomeController> logger, IPeople people)
{
//Nlog构造方法注入
_logger = logger;
_people = people;
_logger.LogDebug("这里是homeController构造方法");
}
public IActionResult Index()
{
//使用Nlog写日志
_logger.LogDebug("这里是homeController");
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}