【发布时间】:2017-12-05 16:45:50
【问题描述】:
MVC Core Web 服务项目,使用 AspNetCore 2.0.0 和 Serilogger 2.0.2。
在我们的一个控制器中,我正在使用 Serilog 将请求数据记录到 Application Insights。
在我们的 Startup:Configure 方法中...
Serilog.ILogger serilogLogger = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.FromLogContext()
.WriteTo.ApplicationInsightsEvents( Configuration.GetValue<string>( "ApplicationInsights:InstrumentationKey" ) )
.CreateLogger();
loggerFactory.AddSerilog( serilogLogger );
没什么特别的。在我们的控制器中,我们有以下内容
public async Task<IActionResult> Create( [FromBody] List<Event> value )
{
foreach( Event e in value )
{
_logger.LogWarning( "***** Event Create {@event}", e );
}
}
我们在 App Insights 中看到的内容如下:
{"AspNetCoreEnvironment":"Development","{OriginalFormat}":"***** Event Create {@event}","DeveloperMode":"true","CategoryName":"Demo.Controllers.EventController","@event":"Demo.Models.Event"}
为什么它只是给我类型,并将其序列化为 Json? 我已经尝试在 Event 类上重载 ToString 方法并从 LogWarning() 中删除 @ ,我们继续在日志中打印出类型。在这种情况下,它是“字符串”。
【问题讨论】:
-
顺便说一句:我在这个演示之后设置了我们的代码:channel9.msdn.com/Series/aspnetmonsters/…
标签: c# logging asp.net-core-mvc azure-application-insights serilog