没有构造函数的 Serilog WCF 用法?

Serilog WCF usage without constructors?

我是 c# 的新手,我正在尝试在 WCF 应用程序中使用 serilog。此 WCF 应用程序托管在 IIS 6.0 上。

我只需要在服务初始化时创建一次记录器。但是 WCF 似乎没有构造函数。我怎样才能只创建一次下面的记录器并将其用于应用程序的其余部分。任何代码示例将不胜感激。

ILogger logger = new LoggerConfiguration()
                      .ReadAppSettings()
                      .CreateLogger();
              Log.Logger = logger;

我考虑过使用 App_Code 文件夹中的 AppInitialize,但我似乎无法让程序触发 AppInitialize 方法。

public class InitializeApp
{
    public static void AppInitialize()
    {
       
ILogger logger = new LoggerConfiguration()
                      .ReadAppSettings()
                      .CreateLogger();
              Log.Logger = logger;
    } 
}

当我 运行 Visual Studio 2019 AppInitialize 中的项目从未被命中。

首先,您可以通过一些支持 WCF 服务的依赖注入库使用 WCF 服务进行构造

您可以使用AutoFac.WCF then you can register type of ILogger by Autofac

builder.Register<ILogger>((c, p) =>
{
    return new LoggerConfiguration()
                 .ReadAppSettings()
                 .CreateLogger();
}).SingleInstance();

二、关于应用程序的“InitializeApp”。有几种方法可以做到这一点。

  1. 添加Global.asax文件,然后就可以在Application_Start
  2. 中编写代码了
  3. 使用Owin Middleware编写自己的管道。您可以在 Startup.cs
  4. 中编写代码
  5. 使用WebActivator,你可以写PreApplicationStartMethodPostApplicationStartMethod(Global.asax的扩展名)