当前位置: 首页 > 知识库问答 >
问题:

Netcore 2.0在DI容器中创建日志时未记录跟踪和调试

吕子真
2023-03-14

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

我有一个问题,日志记录正在为Info/Warning/Error/Critical工作,但调试和跟踪没有显示。我已将控制台级别设置为跟踪。如果我只是创建一个记录器工厂,那么所有日志都会显示出来。

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

我试着在服务集合上添加一个dispose,如本文所述,编辑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;

            }
    }

}

共有1个答案

尚河
2023-03-14

servicecolection上使用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();
}
 类似资料:
  • 此任务将展示如何配置 Istio 创建自定义日志条目并且发送给 Fluentd 守护进程。Fluentd 是一个开源的日志收集器, 支持多种数据输出并且有一个可插拔架构。 Elasticsearch是一个流行的后端日志记录程序, Kibana 用于查看。在任务结束后, 一个新的日志流将被加载发送日志到示例 Fluentd/Elasticsearch/Kibana 栈。 在任务中,将使用 BookI

  • 本章介绍如何使用Zipkin或Jaeger收集启用了Istio的应用程序的调用链信息。 完成本章后,你可以理解有关应用程序的所有假设以及如何使其参与跟踪,无论您使用何种语言/框架/平台构建应用程序。 BookInfo示例用来作为此任务的示例应用程序。 环境准备 参照安装指南的说明安装Istio。 如果您在安装过程中未启动Zipkin或Jaeger插件,则可以运行以下命令启动: 启动Zipkin:

  • 一般来说,你应该在运行时增加调试选项来调试问题;也可以把调试选项添加到 Ceph 配置文件里来调试启动问题,然后查看 /var/log/ceph (默认位置)下的日志文件。 Tip 调试输出会拖慢系统,这种延时有可能掩盖竞争条件。 日志记录是资源密集任务。如果你碰到的问题在集群的某个特定区域,只启用那个区域对应的日志功能即可。例如,你的 OSD 运行良好、元数据服务器却不行,这时应该先打开那个可疑

  • 大家好,希望有人能帮助我,我正在尝试获得一个非常基本的zipkin实现,以掌握分布式跟踪。我正在使用Spring靴来做这件事,但似乎不能使它工作。当我尝试为我的服务查找跟踪时,zipkin UI中不会显示任何内容。 我有两个部署如下: 我想要登录的spring boot应用程序: 我得完整日志: 我部署的第二个应用程序是我的zipkin客户机/UI Pom.xml

  • 本章展示如何配置Istio来自动收集mesh中服务的遥测数据。 在本章末尾,将为mesh中的服务调用启用新的metric和新的日志流。 BookInfo应用将作为介绍本章内容的示例应用。 开始之前 在集群中安装Istio并部署一个应用程序。 本章假设Mixer使用默认配置(--configDefaultNamespace=istio-system)。 如果使用不同的值,则更新这个任务中的配置和命令

  • 问题内容: 是否有一个Logger可以轻松记录我的堆栈跟踪记录(我得到了什么 )?我搜索了log4j文档,但未发现有关记录堆栈跟踪的任何信息。 我可以自己做 但我不想到处重复这段代码。 如果log4j不会为我执行此操作,是否还有另一个日志记录程序包将为我记录stacktrace? 谢谢。 问题答案: 使用log4j可通过以下方式完成: 第一个参数是要显示的消息,第二个参数是记录堆栈跟踪的异常(可抛