我在一个NLog核心3.1Worker服务应用程序中使用.NET。在NLog教程之后,我插入了一个nlog.config文件来管理配置。
现在我很困惑,因为我有三个点来配置日志记录:
我看到的是,如果删除Nlog.config文件,日志文件将不会被创建。其他改变缝没有效果。
这些配置是如何关联的?打开/关闭日志并设置级别的最佳方法是什么?
发布于 2020-01-16 20:27:51
决定使用NLog的人通常也希望禁用所有的MEL过滤,以避免与两个过滤系统混淆。因此,NLog wiki教程就是针对这些用户的。
我想那些最先使用new HostBuilder().CreateDefaultBuilder().Build()的人可能只会使用(会在所有的枪支都启用的情况下设置所有的东西)。
但是,如果继续使用简单的示例,则需要删除:
loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
并增加:
loggingBuilder.AddConfiguration(config.GetSection("Logging"));
看起来是这样的:
serviceCollection.AddLogging(loggingBuilder =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddConfiguration(config.GetSection("Logging"));
loggingBuilder.AddNLog(config);
})ILoggingBuilder.AddConfiguration可以在Nuget:Microsoft.Extensions.Logging.Configuration上找到。
发布于 2020-01-08 20:20:56
AddNLog和其他任何(MEL) LoggingProvider一样注册NLog (类似于AddConsole)。
这意味着NLog只获得已被“批准”的日志输出。因此,在MEL中配置的任何筛选都将阻止日志事件到达NLog。
NLog仍然能够基于Logger名称和LogLevel-严重性重定向到想要的NLog-目标。
您可以决定是使用MEL筛选还是NLog过滤,还是两者结合使用。但是,如果您只想使用“纯”NLog,那么只需创建一个NLog.Extensions.Logging.NLogLoggerFactory实例。它是一个专门的ILoggerFactory,它忽略了MEL过滤配置。
顺便说一句。为每个Commands作业实例创建一个孤立的LoggerFactory有点奇怪。会认为您将在依赖项注入框架中注册该类型,并让它注入构造函数参数。还请参阅此示例:
其中LoggerFactory是用AddLogging(...)创建的,Runner是在ServiceCollection中注册的,以便进行依赖注入。在创建Runner实例时,依赖注入将自动提供ILogger作为构造函数参数。
https://stackoverflow.com/questions/59648290
复制相似问题