Asp.net web api 任何使用Serilog.Extras.MSOwin的人

Asp.net web api 任何使用Serilog.Extras.MSOwin的人,asp.net-web-api,serilog,Asp.net Web Api,Serilog,我想知道是否有人看过在web api项目中使用Serilog.Extras.MSOwin包的演示/示例,或者在web api项目中使用Serilog的示例/教程 非常感谢您的帮助, Jim我将把这个问题作为“我如何使用Serilog.Extras.MSOwin?”的问题,考虑到它目前是一个相当小的图书馆答案 这反映了当前库(1.4.102),并可能在未来发生变化 Serilog.Extras.MSOwin提供了两个功能:一个Microsoft.Owin.Logging.ILoggerFactor

我想知道是否有人看过在web api项目中使用Serilog.Extras.MSOwin包的演示/示例,或者在web api项目中使用Serilog的示例/教程

非常感谢您的帮助,
Jim

我将把这个问题作为“我如何使用Serilog.Extras.MSOwin?”的问题,考虑到它目前是一个相当小的图书馆答案

这反映了当前库(1.4.102),并可能在未来发生变化


Serilog.Extras.MSOwin
提供了两个功能:一个
Microsoft.Owin.Logging.ILoggerFactory
实现,让Owin的日志基础结构写入Serilog(),以及每个web请求的
Guid
标识符(RequestId),以帮助关联记录的事件

日志集成是通过以下方式完成的:

IAppBuilder应用程序=。。。;
Serilog.ILogger记录器=…'
应用程序SetLoggerFactory(新Serilog.Extras.MSOwin.LoggerFactory(记录器));
需要在OWIN管道中注册请求id功能:

IAppBuilder应用程序=。。。;
app.useserlogrequestcontext(“RequestId”);
您将希望在管道中尽早注册,因为在管道步骤之前发生的任何日志记录都不会有可用的请求id

您还需要使用
exprich.FromLogContext()
从LogContext中检索该属性,并将该属性添加到写入接收器的内容中。比如说,

常量字符串DefaultOutputTemplate=
“{Timestamp:yyyy-MM-dd HH:MM:ss.fff-zzz}({RequestId}){Message}{NewLine}{Exception}”;
ILogger记录器=
新建LoggerConfiguration().Enrich.FromLogContext())
.书面
.RollingFile(
“log.txt”,
outputTemplate:DefaultOutputTemplate)
.CreateLogger();

Serilog.Extras.MSOwin
作者(自那时起也已停产)。

如中所述,要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与堆栈溢出无关。(见该页编号列表中的项目。)我有这方面的工作样本吗?最好只是基本的ASP.NET MVC?我不清楚生命周期是如何工作的,即如何在控制器内部获取记录器的初始化实例。但是,除非您谈论的是ASP.NET5(MVC6),否则我认为您找错了地方,所以演示不会回答您的问题。OWIN无法承载当前版本的ASP.NET MVC。