我有一个小型的控制台应用程序。我已经启用了调试和控制台日志记录。然而,他们似乎没有遵守我的配置日志级别。这是我的设置:
添加Config文件并创建记录器
// global to Program
private static ILogger<Program> _logger;
private const string _configFile = "appsettings.json";
//inside Main
_config = new ConfigurationBuilder()
.AddJsonFile(_configFile, optional: false, reloadOnChange: true)
//.AddEnvironmentVariables()
.AddCommandLine(args)
.Build();
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddDebug();
builder.AddSimpleConsole();
});
_logger = loggerFactory.CreateLogger<Program>();appconfig.json
"Logging": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Debug",
"Microsoft": "Warning"
},
"Debug": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Warning",
"FleetLogix.TcaProcessor": "Trace"
}
},
"SimpleConsole": {
"IncludeScopes": "false",
"SingleLine": "false",
"TimestampFormat": "yyyy-MM-dd HH:mm:ss ",
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"FleetLogix.TcaProcessor": "Information"
}
}
},它目前设置为两个提供程序: Debug (visual studio run窗格)和Console。这很管用。调试的目的是在跟踪处登录,但只在Info上进行日志记录。Console正在Info登录,但没有在消息上加上时间戳。
我的配置设置正确吗?(正确的属性名称、正确的深度等等)我应该将其更改为什么?
控制台也有一个可怕的断线,阅读告诉我,您需要分叉Microsoft.Extensions.Logging.Console来修复,所以改天。:/
发布于 2021-03-25 23:30:41
最后,我切换到了Serilog,因为我需要一个文件作者。唯一困难的部分是解决旧版本和当前版本之间的差异,其中滚动文件接收器现在已经集成到文件接收器中。
Program.cs
#region Initialise Logger
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(_config)
.CreateLogger();
Log.Information("Logger started");
#endregionappsettings.json
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"path": "c:\\scripts\\log\\myprogram.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 7
}
}
],
"Properties": {
"Application": "MyProgram"
}
},发布于 2022-10-10 05:06:59
我知道您已经转到了Serilog,但是这里的答案是您没有将配置连接到LoggerFactory。您需要标识配置对象,还需要使用来自.AddConfiguration的Microsoft.Extensions.Configuration扩展方法,从哪个部分加载日志设置:
using Microsoft.Extensions.Configuration;
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConfiguration(_config.GetSection("Logging"));
builder.AddDebug();
builder.AddSimpleConsole();
});https://stackoverflow.com/questions/65191080
复制相似问题