0

OrchardCore 的所有示例都显示嵌入在 startup.cs 文件中,但是有没有办法在 Program.cs 中更早地加载它?我正在尝试为 Serilog 设置一个模块,这样我就可以将它放入我的项目中,但也许这甚至不可能,我不知道。

4

1 回答 1

1

我在这里找到了 OrchardCore 的 github repo 的答案

编辑

后来我意识到这并没有真正回答我的问题,但是哦。把这个答案留在这里,以防它适合某人的需要。

这是设置:

添加对 OrchardCore.Logging.Serilog 的引用

在 appsettings.json 中添加 serilog 配置

"Serilog": {
    "MinimumLevel": {
      "Default": "Warning",
      "Override": {
        "Default": "Warning",
        "Microsoft": "Error",
        "System": "Error"
      }
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
          "outputTemplate": "{Timestamp:HH:mm:ss}|{TenantName}|{RequestId}|{SourceContext}|{Level:u3}|{Message:lj}{NewLine}{Exception}",
          "restrictedToMinimumLevel": "Information"
        }
      },
      {
        "Name": "RollingFile",
        "Args": {
          "pathFormat": "app_data/logs/orchard-log-{Date}.txt",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.ffff}|{TenantName}|{RequestId}|{SourceContext}|{Level:u3}|{Message:lj}{NewLine}{Exception}",
          "restrictedToMinimumLevel": "Warning"
        }
      }
    ]
  }

修改 program.cs 以使用 Serilog

public static IWebHost BuildWebHost(string[] args)
        => WebHost.CreateDefaultBuilder(args)
            .UseSerilogWeb()
            .UseStartup<Startup>()
            .Build();

修改 startup.cs 以在 LogContext 中包含 TenantName

using OrchardCore.Logging;

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseStaticFiles();
    app.UseOrchardCore(c => c.UseSerilogTenantNameLoggingMiddleware());
}
于 2019-10-12T21:37:58.220 回答