将值传递给日志自定义目标
本文关键字:自定义 目标 日志 值传 | 更新日期: 2023-09-27 18:18:04
我已经创建了一个自定义nLog目标,它正在工作,除了一件事。我想把登录的人的名字传递给目标,我已经创建了一个名为ApplicationUser
的属性,它将拾取值。
目标定义如下:
<target name="MemoryTrace"
xsi:type="CustomTraceListener"
ApplicationUser="${identity:authType=False:isAuthenticated=False}" />
但是当customTarget接收到ApplicationUser的值时,它不会被解析为登录人员的姓名,它只是保持为${identity:authType=False:isAuthenticated=False}
。
这都是按照nLog文档
我已经在其他目标上测试了这个问题,它得到了解决。如何将其解析为用户名?
你需要用Layout
类型定义你的ApplicationUser
,然后你可以使用ApplicationUser.Render(logevent)
:
[Target("CustomTraceListener")]
public sealed class MyFirstTarget : TargetWithLayout
{
public Layout ApplicationUser { get; set; }
protected override void Write(LogEventInfo logEvent)
{
string logMessage = this.Layout.Render(logEvent);
string applicationUser = ApplicationUser.Render(logEvent);
// ... Write where you want
}
}