关于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();
}
}

浙公网安备 33010602011771号