我NLog用于在.net核心中记录消息.
我加入NLog的StartUp.cs,如下所示:
loggerFactory.AddNLog();
Run Code Online (Sandbox Code Playgroud)
要记录到文件,我使用以下方法:
logger.LogInformation("Message");
Run Code Online (Sandbox Code Playgroud)
我想在我的消息中添加自定义NLog事件属性.但是LogInformation()不允许我传递它.我怎样才能做到这一点?
我正在尝试编写一个自定义LayoutRenderer来记录从对象读取的数据,但是NLog似乎不能与依赖注入一起正常工作。
这是我的CustomLayoutRenderer:
[LayoutRenderer("custom-value")]
public class CustomLayoutRenderer : LayoutRenderer
{
private readonly RequestContext _context;
public CustomLayoutRenderer(RequestContext context)
{
_context = context;
}
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
builder.Append(_context.CustomValue);
}
}
Run Code Online (Sandbox Code Playgroud)
它正在使用此RequestContext对象:
public class RequestContext
{
public string CustomValue { get; set; } = "Valid custom value";
}
Run Code Online (Sandbox Code Playgroud)
我还在连接DI,配置NLog并在Startup.cs中注册我的LayoutRenderer:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<RequestContext>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
LayoutRenderer.Register<CustomLayoutRenderer>("custom-value");
loggerFactory.AddNLog();
app.AddNLogWeb();
env.ConfigureNLog("nlog.config");
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后,我尝试${custom-value}在nlog.config中使用我的设备,但是在AddNLog()通话中出现错误: …
任何人都可以为我提供一个非常样本的自定义layoutrenderer用于nlog吗?
举例来说,我希望在im log中进行缩进
如果我从方法C调用方法B
文本日志文件如下所示:
Inside Method C
Inside Method B
Run Code Online (Sandbox Code Playgroud)
等等.