我们已经熟悉在ASP.NET CORE项目中添加NLog去记录我们的日志。但方法移到web API中行不通。我简历记录下我加的方法。
1. Nuget 加 NLog.Web.AspNetCore
2. 加引用 using NLog.Extensions.Logging;
using NLog.Web;
3. 在startup.cs中改public void Configure(IApplicationBuilder app, IHostingEnvironment env) 为
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory), 并加上如下代码
loggerFactory.AddNLog();
app.AddNLogWeb();
loggerFactory.ConfigureNLog(@“D:\nlog.config”);
4. 加配制文件 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"
internalLogLevel="Warn"
internalLogFile="internal-nlog.txt">
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="File" name="ownFile-web" fileName="nlog-own-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}| ${message} ${exception}" />
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
5. 加一个我自己的Log 类
using System;
using NLog;
namespace WebApiProducers
{
public static class WmsReLog
{
private static ILogger logger = NLog.LogManager.GetCurrentClassLogger();
public static void Debug(object sender, string msg)
{
if (sender != null)
{
Type type = sender.GetType();
logger.Debug(string.Format("{0}: {1}", type.FullName, msg));
}
else
{
logger.Debug(string.Format("{0}: {1}", "Null", msg));
}
}
public static void Info(object sender, string msg)
{
if (sender != null)
{
Type type = sender.GetType();
logger.Info(string.Format("{0}: {1}", type.FullName, msg));
}
else
{
logger.Info(string.Format("{0}: {1}", "Null", msg));
}
}
public static void Warn(object sender, string msg)
{
if (sender != null)
{
Type type = sender.GetType();
logger.Warn(string.Format("{0}: {1}", type.FullName, msg));
}
else
{
logger.Warn(string.Format("{0}: {1}","Null", msg));
}
}
public static void Error(object sender, string msg)
{
if (sender != null)
{
Type type = sender.GetType();
logger.Error(string.Format("{0}: {1}", type.FullName, msg));
}
else
{
logger.Error(string.Format("{0}: {1}", "Null", msg));
}
}
public static void Fatal(object sender, string msg)
{
if (sender != null)
{
Type type = sender.GetType();
logger.Fatal(string.Format("{0}: {1}", type.FullName, msg));
}
else
{
logger.Fatal(string.Format("{0}: {1}", "Null", msg));
}
}
public static void Trace(object sender, string msg)
{
if (sender != null)
{
Type type = sender.GetType();
logger.Trace(string.Format("{0}: {1}", type.FullName, msg));
}
else
{
logger.Trace(string.Format("{0}: {1}", "Null", msg));
}
}
}
}
6. 调用就行
WmsReLog.Debug(this, "you just do it ");
--------------------- 本文来自 梭梭888 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xbqiao/article/details/78427331?utm_source=copy