首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在appsettings.json中更改日志级别不会应用于NLog

是因为NLog不会自动检测和应用appsettings.json文件中的更改。NLog是一个强大的日志记录库,可以根据配置文件中的规则将日志消息记录到不同的目标(如文件、数据库、控制台等)。而appsettings.json是一个通用的配置文件,用于存储应用程序的各种配置信息。

要使appsettings.json中的日志级别更改生效,需要手动编写代码来读取appsettings.json文件中的日志配置,并将其应用到NLog。以下是一种可能的实现方式:

  1. 首先,确保在项目中引用了NLog和Microsoft.Extensions.Configuration.Json包。
  2. 创建一个类来读取appsettings.json文件中的日志配置。例如,可以创建一个名为AppSettingsLoggerConfig的类。
代码语言:txt
复制
using Microsoft.Extensions.Configuration;

public class AppSettingsLoggerConfig
{
    public string LogLevel { get; set; }

    public static AppSettingsLoggerConfig ReadFromAppSettings(IConfiguration configuration)
    {
        var loggerConfig = new AppSettingsLoggerConfig();
        configuration.GetSection("Logging").Bind(loggerConfig);
        return loggerConfig;
    }
}
  1. 在应用程序启动时,读取appsettings.json中的日志配置,并将其应用到NLog。
代码语言:txt
复制
using Microsoft.Extensions.Configuration;
using NLog;
using NLog.Config;

public class Program
{
    public static void Main(string[] args)
    {
        // 读取appsettings.json中的配置
        var configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();

        var loggerConfig = AppSettingsLoggerConfig.ReadFromAppSettings(configuration);

        // 配置NLog
        var nlogConfig = new LoggingConfiguration();

        // 创建日志规则并设置级别
        var consoleTarget = new ColoredConsoleTarget();
        consoleTarget.Layout = "${date:format=yyyy-MM-dd HH\\:mm\\:ss} ${logger} ${level} ${message}";
        nlogConfig.AddTarget("console", consoleTarget);

        var consoleRule = new LoggingRule("*", LogLevel.FromString(loggerConfig.LogLevel), consoleTarget);
        nlogConfig.LoggingRules.Add(consoleRule);

        // 应用NLog配置
        LogManager.Configuration = nlogConfig;

        // 运行应用程序
        // ...

        // 退出应用程序时,释放NLog资源
        LogManager.Shutdown();
    }
}

在上述示例中,我们通过读取appsettings.json中的日志配置,创建了一个针对控制台输出的日志规则,并将其应用到了NLog的配置中。需要注意的是,示例中使用的日志级别是从appsettings.json的Logging节点中读取的,因此需要确保appsettings.json中有一个Logging节点,并在其下包含LogLevel属性。

在此示例中,未提及任何特定的云计算品牌商,如果您有特定的要求,可以根据具体情况选择腾讯云相关的产品和产品介绍链接地址来进行配置。

希望以上内容能够帮助到您!如果您对其他问题有需求,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • ASP.NET Core 实战:使用 NLog 将日志信息记录到 MongoDB

    在项目开发中,日志系统是系统的一个重要组成模块,通过在程序中记录运行日志、错误日志,可以让我们对于系统的运行情况做到很好的掌控。同时,收集日志不仅仅可以用于诊断排查错误,由于日志同样也是大量的数据,通过对这些数据进行集中分析,可以产生极大的价值。   在微服务的系统架构中,由于一个系统会被拆成很多个功能模块,每个模块负责不同的功能,对于日志系统的要求也会更高,比较常见的有 EFLK(ElasticSearch + Filebeat + LogStash + Kibana) 方案,而对于我们这种单体应用来说,由于程序的代码比较集中,所以我们主要采用手写日志帮助类或是使用第三方组件的形式进行日志信息的记录。

    01

    [ASP.NET Core 3框架揭秘] 配置[2]:读取配置数据[下篇]

    [接上篇]提到“配置”二字,我想绝大部分.NET开发人员脑海中会立即浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个XML格式的文件之中。到了.NET Core的时代,很多我们习以为常的东西都发生了改变,其中就包括定义配置的方式。总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源。我们可以采用内存的变量作为配置的数据源,也可以将配置定义在持久化的文件甚至数据库中。在对配置系统进行系统介绍之前,我们先从编程的角度来体验一下全新的配置读取方式。

    04
    领券