问题描述
我目前正在做一个单声道项目,想在那里使用 Microsoft.Logging + Serilog,但我偶然发现了以下问题: 当我手动配置 Serilog 时,它会同时登录控制台和文件(如果我已经配置了这两个参数)。但是当我使用配置文件时,Serilog 总是忽略记录到文件中。
找到配置文件并从那里读取参数,因为如果我在那里添加“控制台”,Serilog会登录到控制台。
按照我的理解,通过这些设置,Serilog 应该登录到控制台和文件。我期待在 "folder with appsettings.json"/logs
中有此日志文件。但它只登录到控制台。当我删除 "Console"
时,它不会在任何地方记录。我不明白为什么会这样,所以我发布了一些基本的代码部分。如果我没有提供足够的信息,请在问题下方的评论中写信给我。
appsettings.json:
{
"Serilog": {
"Using": [
"Serilog.Sinks.Console"
],"MinimumLevel": "Debug","Enrich": [
"FromLogContext","WithMachineName","WithProcessId","WithThreadId"
],"Writeto": [
{
"Name": "File","Args": {
"Path": "logs/GUIDemo.log","FileSizeLimitBytes": "400000","RollingInterval": "Day","RetainedFileCountLimit": "15","OutputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Level:u3}] {Message:lj} {NewLine}{Exception}","shared": true
}
},"Console"
]
}
}
以下是我在一个类中配置 Serilog 的方法,在应用程序启动后不久执行哪些方法:
private IContainer container;
private ILogger<Bootstrapper> logger;
...
public void OnStartup()
{
this.Configuration = this.ConfigureConfiguration();
var builder = new ContainerBuilder();
builder.RegisterModule<AutofacModule>();
this.container = builder.Build();
this.AddLogger();
this.logger = this.container.Resolve<ILogger<Bootstrapper>>();
this.LogApplicationStart();
}
最后是方法 AddLogger()
、LogApplicationStart()
和 LogApplicationStart()
:
private void AddLogger()
{
var loggerFactory = this.container.Resolve<ILoggerFactory>();
loggerFactory.AddSerilog();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(this.Configuration)
.CreateLogger();
}
private IConfigurationRoot ConfigureConfiguration()
{
return new ConfigurationBuilder().SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json",false,true)
.Build();
}
private void LogApplicationStart()
{
this.logger.Log@R_542_4045@ion("App is started");
}
单声道:日志文件是: 'C:\Users\Albert\AppData\Roaming/Godot/mono/mono_logs/2021_01_27 12.46.37(105008).txt'
[12:46:38 INF] 应用启动
Mono 日志文件与我的日志文件无关。我还尝试在 Log.CloseAndFlush()
的末尾添加 LogApplicationStart()
,这是应用程序中目前唯一的方法,但它也没有帮助我。
当然,我知道这里有很多类似的问题,但我找不到解决我的问题的方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)