NLog是在.NET平台下用的比较多的日志处理类库,能够输出带有上下文的调试诊断信息,根据配置文件可以选择多种输出方式和表现形式。
更多的配置和使用方法请自行查看官方文档或其他博客,这里只简单的记录下如何使用NLog记录html格式的日志信息。
1.首先安装NuGet包
NLog.Web.AspNetCore
2.在项目中添加NLog.config配置文件
image.png
3.配置文件添加以下配置信息
<?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">
<!-- the targets to write to -->
<targets>
<!-- 输出到文件,这个文件记录所有的日志 -->
<target xsi:type="File" name="allfile" fileName="Log\LogAll\${shortdate}.htm"
layout="<HR COLOR=red>${longdate}<BR>${logger}<BR>${uppercase:${level}}<BR>${message} ${exception}<HR Size=1>" />
<!-- 输出到文件,这个文件记录错误日志 -->
<target xsi:type="File" name="logError" fileName="Log\LogError\${shortdate}.htm"
layout="<HR COLOR=red>【异常时间】:${date} <BR>【异常级别】:${level:uppercase=true} <BR>${message}<HR Size=1>" />
<!-- 输出到文件,这个文件记录操作日志 -->
<target xsi:type="File" name="logInfo" fileName="Log\LogInfo\${shortdate}.htm"
layout="<HR COLOR=red>【操作时间】:${date} <BR>【操作级别】:${level:uppercase=true} <BR>${message}<HR Size=1>" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<!--<logger name="*" minlevel="Trace" writeTo="allfile" />-->
<logger name="*" minlevel="Error" writeTo="logError" />
<logger name="*" minlevel="Info" writeTo="logInfo" />
<!--<logger name="Microsoft.*" maxLevel="Info" final="true" />-->
</rules>
</nlog>
4.在Startup.cs中配置NLog
public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
//使用NLog
loggerFactory.AddNLog();
env.ConfigureNLog("NLog.config");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Values}/{action=Get}");
});
}
5.打印日志
Logger logger = LogManager.GetCurrentClassLogger();
logger.Info("这是一条日志...");
下面是封装的使用多线程打印的NLogHelper类
public class NLogHelp
{
public static Logger logger = LogManager.GetCurrentClassLogger();
public static Task ErrorLog(string throwMsg)
{
return Task.Factory.StartNew(() =>
{
string errorMsg = string.Format("【异常信息】:{0} <br>",
new object[] { throwMsg });
errorMsg = errorMsg.Replace("\r\n", "<br>");
errorMsg = errorMsg.Replace("位置", "<strong style=\"color:red\">位置</strong>");
logger.Error(errorMsg);
}, TaskCreationOptions.LongRunning);
}
public static Task InfoLog(string operateMsg)
{
return Task.Factory.StartNew(() =>
{
string errorMsg = string.Format("【操作信息】:{0} <br>",
new object[] { operateMsg });
errorMsg = errorMsg.Replace("\r\n", "<br>");
logger.Info(errorMsg);
}, TaskCreationOptions.LongRunning);
}
}
6.日志内容如下
注意:在开发环境下会输出日志处理过程的信息。
网友评论