.Net Core记录Log的方法之NLog
前言
前段时间,我搭建的.Net Core系统经常重定向到登录页,但是我设置的Cookie明明是半个月到期,我知道是时候该用Log监控一下是什么原因了,这里我用到的是NLog。
引入依赖包
如图,依赖NLog和NLog.Web.AspNetCore两个包
引入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="info"
internalLogFile="C:\log\internal-nlog.txt">
<targets>
<target xsi:type="File" name="ownFile-web" fileName="${basedir}/Log/${shortdate}_${level}.config" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
这里Level是指日志级别,官网给出的如图
那么这句代码
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
的解读就是所有名字的Log,Level最低都打印到ownFile-web对应的节点
<target xsi:type="File" name="ownFile-web" fileName="${basedir}/Log/${shortdate}_${level}.config" />
此处fileName指向就是当前文件夹下/Log/日期/Error|Info|…|.config日志文件。其中logger name="*"可用来过滤打印什么名字开头的Log,比如
<!--Debug模式和Release模式打出来的包,LogName前缀不一样,Release是以Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider开头的-->
<logger name="Microsoft.*" minlevel="Trace" final="true" />
<!--上方已经过滤了所有Microsoft.*的日志,所以此处的日志只会打印除Microsoft.*外的日志-->
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
开始我这么写,发布很多次Debug模式下能打印Log,Release不打印Log就是因为logger name="Microsoft.*"这句话过滤掉了,并且没有writeTo,能打印才怪,补充一点,最初是设置了layout属性的,如代码
<target xsi:type="File" name="ownFile-web" fileName="${basedir}/Log/${shortdate}_${level}.config"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
这里面${logger} 属性在release和debug模式打包后名字不一样,才会过滤掉,如不设置,默认挺好,Level在前,路径在后,就没这问题了。
测试代码
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public IActionResult Index()
{
//logger.Trace("这是Trace日志");
//logger.Debug("这是Debug日志");
logger.Info("Add UserInfo info: "+ "Home Index Successful.");
//logger.Warn("这是警告日志");
//logger.Error("这是错误日志");
//logger.Error("Add UserInfo err:" + "ex.Message");
return View();
}
测试代码很简单,如上,看效果
2020-08-03 08:38:33.3054|INFO|Management.Client.Controllers.HomeController|Add UserInfo info: Home Index Successful.
仅供学习参考,如有侵权联系我删除