关于net core 开发服务时,使用Serilog根据appsettings.json输出日志错误的问题。
使用Serilog输出日志时,配置内容如下,
"Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], "MinimumLevel": "Debug", "WriteTo": [ { "Name": "Console" }, { "Name": "File", "Args": { "path": "Logs/log.txt", "rollingInterval": "Day", "fileSizeLimitBytes": "10485760" "retainedFileCountLimit": 5, "rollOnFileSizeLimit": true } } ], "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], "Properties": { "Application": "Sample" } },
输入日志目录在调试时是在项目路径下的,但是当发布后,输入日志则在C:\Windows\System32下,此问题的修复方法为在Main启动时,添加
Environment.CurrentDirectory = AppContext.BaseDirectory;
则可以修复这个问题。完整代码如下。
public static void Main(string[] args)
{
Environment.CurrentDirectory = AppContext.BaseDirectory;
try
{
Log.Information("Starting web host");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}
}