4

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

非常感谢任何帮助,吉姆

4

2 回答 2

4

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

这反映了当前的库 (1.4.102),未来可能会发生变化。

Serilog.Extras.MSOwin提供了两件事:Microsoft.Owin.Logging.ILoggerFactory让 OWIN 的日志基础设施写入 Serilog 的实现(有关在此博客文章中登录 OWIN 的更多详细信息)和Guid每个 Web 请求的标识符 (RequestId),以帮助关联记录的事件。

Logging 集成通过以下方式完成:

IAppBuilder app = ...;
Serilog.ILogger logger = ...'
app.SetLoggerFactory( new Serilog.Extras.MSOwin.LoggerFactory( logger ) );

请求 id 功能需要在 OWIN 管道中注册:

IAppBuilder app = ...;
app.UseSerilogRequestContext("RequestId");

您将希望在管道中尽早注册,因为在该管道步骤之前发生的任何日志记录都没有可用的请求 ID。

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

const string DefaultOutputTemplate =
  "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} ({RequestId}) {Message}{NewLine}{Exception}";

ILogger logger =
    new LoggerConfiguration().Enrich.FromLogContext()
        .WriteTo
            .RollingFile(
                "log.txt",
                outputTemplate: DefaultOutputTemplate)
        .CreateLogger();
于 2014-12-22T22:47:24.507 回答
0

Serilog.Extras.MSOwin 被取代SerilogWeb.Owin此后也已停产。)

于 2018-04-11T08:57:45.893 回答