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