使用NLog在ASP.NET Core中记录异常 [英] Logging exception in ASP.NET Core with NLog
本文介绍了使用NLog在ASP.NET Core中记录异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我目前正在尝试使用NLog记录异常消息,等等,到目前为止还没有运气,我无法想象为什么
I'm currently trying to log the exception message, etc using NLog, no luck so far, and I can't imagine why
要设置NLog,我使用了本指南: https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(project.json)
To setup NLog I used this guide: https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(project.json)
我已经在asp.net核心上进行了设置,并尝试在我的商务项目中进行记录
I've setup this on the asp.net core, and tried the logging on my bussiness project
商务
using Microsoft.Extensions.Logging;
public class FileService
{
private readonly ILogger<FileService> _logger;
public Task<DataResult<ICollection<BlankDTO>>> Test(Guid appId, Guid fileId)
{
try
{
throw new DivideByZeroException();
}
catch (DivideByZeroException ex)
{
_logger.LogError("EventId", ex, "Welp, something went wrong", new object[0]);
}
}
}
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="c:\temp\internal-nlog.txt">
<!-- Load the ASP.NET Core plugin -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<!-- the targets to write to -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
<target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log">
<layout xsi:type="JsonLayout">
<attribute name="level" layout="${level}" />
<attribute name="timestamp" layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff}" />
<attribute name="systemUser" layout="${windows-identity:userName=true:domain=true}" />
<attribute name="currentUser" layout="${aspnet-user-identity}" />
<attribute name="machineName" layout="${machinename}" />
<attribute name="environment" layout="#{Environment}" />
<attribute name="applicationName" layout="My app" />
<attribute name="module" layout="My module" />
<attribute name="threadId" layout="${threadid}" />
<attribute name="message" layout="${event-properties:item=message}" />
<attribute name="messageDetails" layout="${exception}" />
<attribute name="variables" layout="${event-properties:item=Variables}" />
</layout>
</target>
<!-- write to the void aka just remove -->
<target xsi:type="Null" name="blackhole" />
</targets>
<!-- rules to map from logger name to target -->
<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>
这就是我得到的所有记录:
{ "level": "Error", "timestamp": "2017-06-20 09:51:24.904", "systemUser": "JONDOE-ORG\\foobar", "machineName": "BUC-007", "environment": "#{Environment}", "applicationName": "My app", "module": "My module", "threadId": "4" }
- NLog.Web.ASpNetCore(4.4.1)
- Microsoft.NETCore.App(1.1.2)
推荐答案
我已经创建了LoggingEvents
I've created a LoggingEvents
public class LoggingEvents
{
public const int GENERATE_ITEMS = 1;
public const int LIST_ITEMS = 2;
public const int GET_ITEM = 3;
public const int INSERT_ITEM = 4;
public const int UPDATE_ITEM = 5;
public const int DELETE_ITEM = 6;
public const int GET_ITEM_NOTFOUND = 7;
public const int UPDATE_ITEM_NOTFOUND = 8;
}
我可以记录如下错误:
//Logging example
try
{
throw new Exception();
}
catch (Exception ex)
{
_logger.LogError(LoggingEvents.GET_ITEM, ex, "Test({appId}, {fileId} Failed", appId, fileId);
}
希望这对某人有帮助.
这篇关于使用NLog在ASP.NET Core中记录异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文