【发布时间】:2019-01-18 20:32:11
【问题描述】:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog((ctx, config) => { config.ReadFrom.Configuration(ctx.Configuration); })
.UseStartup<Startup>();
}
public class Startup
{
public IContainer Container { get; private set; }
public Startup(IConfiguration configuration)
{
Log.Warning("test");
Configuration = configuration;
}
}
appsettings.json
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Default": "Information",
"Microsoft": "Information",
"System": "Information"
}
},
"WriteTo": [
{
"Name": "RollingFile",
"Args": {
"pathFormat": "C:\\test.txt",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.ffff}|{TenantName}|{RequestId}|{SourceContext}|{Level:u3}|{Message:lj}{NewLine}{Exception}",
"restrictedToMinimumLevel": "Information"
}
}
]
},
"AllowedHosts": "*"
}
我已经安装了所有的包
- Serilog,
- Serilog.AspCore,
- Serilog.Settings.Configuration,
- Serilog.Sink.File
【问题讨论】:
-
您找到解决方案了吗?我刚刚将我的应用程序从 ASP.NET Core 2.1 更新到 2.2,现在 Serilog 不再记录了。
-
@Shamshiel 我打了同样的 2.1 到 2.2。墙。你找到解决方案了吗?
-
@AngryHacker 对我来说,问题是我添加到我的 csproj 文件中的“
InProcess ”属性。迁移文档中建议使用它。据我了解,如果您将此属性添加到项目文件中,则 Serilog 在 IIS 进程中运行,并且可能无权在某处写入日志。我刚刚删除了该属性,它又可以工作了! -
@Shamshiel 我也这样做了,但问题是你会失去性能 - 如果你有一个重型站点,这很重要。解决方案是this。
-
@AngryHacker 我没有使用 IIS 来托管我的应用程序,所以我不确定性能损失是否适用于我。
标签: c# asp.net-core serilog