gpt4 book ai didi

logging - 在 DI 容器中创建日志记录时,netcore 2.0 不记录跟踪和调试

转载 作者:行者123 更新时间:2023-12-02 21:29:23 25 4
gpt4 key购买 nike

我有一个控制台应用程序,它将使用 DI 提供配置(选项模式)、日志记录和对应用程序内服务的其他服务引用。

我遇到的问题是,日志记录适用于信息/警告/错误/严重,但调试跟踪未显示。我已将控制台级别设置为 Trace。如果我只是创建一个记录器工厂,则会显示所有日志。

听起来它正在使用默认值。对于在 DI 服务集合中创建的记录器,是否有其他方法来配置日志级别?

我已尝试在服务集合上添加处置,如 this 中所述。发帖,编辑 2 个链接,但没有成功。

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Console;
using System;

namespace DownloadClientData.App
{
class Program
{
static int Main(string[] args)
{
//***if I use this way to create the logger in the DI container, debug and trace messages are not displayed
var serviceCollection = new ServiceCollection();
serviceCollection.AddLogging();

//tried this alternative too - no change...
//serviceCollection.AddLogging(LoggingBuilder => LoggingBuilder.AddFilter<ConsoleLoggerProvider>("All Categories", LogLevel.Trace));
var serviceProvider = serviceCollection.BuildServiceProvider();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();

//***If I comment out the above lines and uncomment the below line, all 6 logs are displayed.

//var loggerFactory = new LoggerFactory();
loggerFactory
.AddConsole(LogLevel.Trace)
.AddDebug(LogLevel.Trace);

var logger = loggerFactory.CreateLogger(typeof(Program));
logger.LogInformation("Information");
logger.LogTrace("Trace");
logger.LogDebug("Debug");
logger.LogWarning("Warning");
logger.LogCritical("Critical");
logger.LogError("Error");
Console.ReadKey();
return 0;

}
}

}

最佳答案

ServiceCollection 上使用 AddLogging() 扩展方法时,最低日志级别的默认值有所不同。您可以这样设置:

static void Main(string[] args)
{
var serviceCollection = new ServiceCollection()
.AddLogging(builder => {
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddConsole();
builder.AddDebug();
});

var serviceProvider = serviceCollection.BuildServiceProvider();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();

var logger = loggerFactory.CreateLogger(typeof(Program));
logger.LogInformation("Information");
logger.LogTrace("Trace");
logger.LogDebug("Debug");
logger.LogWarning("Warning");
logger.LogCritical("Critical");
logger.LogError("Error");
Console.ReadKey();
}

关于logging - 在 DI 容器中创建日志记录时,netcore 2.0 不记录跟踪和调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com