是因为NLog不会自动检测和应用appsettings.json文件中的更改。NLog是一个强大的日志记录库,可以根据配置文件中的规则将日志消息记录到不同的目标(如文件、数据库、控制台等)。而appsettings.json是一个通用的配置文件,用于存储应用程序的各种配置信息。
要使appsettings.json中的日志级别更改生效,需要手动编写代码来读取appsettings.json文件中的日志配置,并将其应用到NLog。以下是一种可能的实现方式:
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;
}
}
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属性。
在此示例中,未提及任何特定的云计算品牌商,如果您有特定的要求,可以根据具体情况选择腾讯云相关的产品和产品介绍链接地址来进行配置。
希望以上内容能够帮助到您!如果您对其他问题有需求,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云