将自定义对象发送到自定义布局渲染器 NLog ASP.NET Core
Send custom object to custom layout renderer NLog ASP.NET Core
我需要在将错误数据保存到 db 后将错误数据打印到 NLog 文件,我想为此编写自定义布局渲染器。
[LayoutRenderer("error-data")]
public class ErrorDataLayoutRenderer : AspNetLayoutRendererBase
{
protected override void DoAppend(StringBuilder builder, LogEventInfo logEvent)
{
builder.Append($"{error.Id} | {error.LoggedDate} | {error.Url}");
}
}
我想写在nlog.config:
<target xsi:type="File" name="errors" fileName="c:\log.errors.txt"
layout=${error-data}" />
在役:
var error = service.LogError(data);
Logger Logger = LogManager.GetCurrentClassLogger();
Logger.Error(error); //or something like that
error
- class 表示数据库中的实体。它具有一些属性,例如:Id, LoggedDate, Summary
等。
如何在此处获取 error
对象?
您可以使用 LogEventInfo
属性发送它。最简单的方法是使用流畅的界面using NLog.Fluent;
记录:
var logger = LogManager.GetCurrentClassLogger();
var error = ..;
logger.Error().Property("prop1", error).Write(); //don't forget .Write()!
在你的目标中:
protected override void DoAppend(StringBuilder builder, LogEventInfo logEvent)
{
var error = logEvent.Properties["prop1"]; //read the property
builder.Append($"{error.Id} | {error.LoggedDate} | {error.Url}");
}
我需要在将错误数据保存到 db 后将错误数据打印到 NLog 文件,我想为此编写自定义布局渲染器。
[LayoutRenderer("error-data")]
public class ErrorDataLayoutRenderer : AspNetLayoutRendererBase
{
protected override void DoAppend(StringBuilder builder, LogEventInfo logEvent)
{
builder.Append($"{error.Id} | {error.LoggedDate} | {error.Url}");
}
}
我想写在nlog.config:
<target xsi:type="File" name="errors" fileName="c:\log.errors.txt"
layout=${error-data}" />
在役:
var error = service.LogError(data);
Logger Logger = LogManager.GetCurrentClassLogger();
Logger.Error(error); //or something like that
error
- class 表示数据库中的实体。它具有一些属性,例如:Id, LoggedDate, Summary
等。
如何在此处获取 error
对象?
您可以使用 LogEventInfo
属性发送它。最简单的方法是使用流畅的界面using NLog.Fluent;
记录:
var logger = LogManager.GetCurrentClassLogger();
var error = ..;
logger.Error().Property("prop1", error).Write(); //don't forget .Write()!
在你的目标中:
protected override void DoAppend(StringBuilder builder, LogEventInfo logEvent)
{
var error = logEvent.Properties["prop1"]; //read the property
builder.Append($"{error.Id} | {error.LoggedDate} | {error.Url}");
}