首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#核Microsoft.Extensions.Logging与日志控制

c#核Microsoft.Extensions.Logging与日志控制
EN

Stack Overflow用户
提问于 2020-12-07 23:45:45
回答 2查看 676关注 0票数 0

我有一个小型的控制台应用程序。我已经启用了调试和控制台日志记录。然而,他们似乎没有遵守我的配置日志级别。这是我的设置:

添加Config文件并创建记录器

代码语言:javascript
复制
// 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

代码语言:javascript
复制
"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来修复,所以改天。:/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-25 23:30:41

最后,我切换到了Serilog,因为我需要一个文件作者。唯一困难的部分是解决旧版本和当前版本之间的差异,其中滚动文件接收器现在已经集成到文件接收器中。

Program.cs

代码语言:javascript
复制
#region Initialise Logger

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(_config)
    .CreateLogger();

Log.Information("Logger started");

#endregion

appsettings.json

代码语言:javascript
复制
"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"
    }
},
票数 0
EN

Stack Overflow用户

发布于 2022-10-10 05:06:59

我知道您已经转到了Serilog,但是这里的答案是您没有将配置连接到LoggerFactory。您需要标识配置对象,还需要使用来自.AddConfiguration的Microsoft.Extensions.Configuration扩展方法,从哪个部分加载日志设置:

代码语言:javascript
复制
using Microsoft.Extensions.Configuration;

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConfiguration(_config.GetSection("Logging"));
    builder.AddDebug();
    builder.AddSimpleConsole();
});

这个问题类似:.NET Non-host LoggerFactory configuration

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65191080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档