在 ASP.NET Core 应用中,可以使用 NLog 手动配置日志过滤器。以下是可以在 Startup.cs 文件中使用的示例代码:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using NLog;
using NLog.Extensions.Logging;
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
public class Startup
{
private readonly ILogger _logger;
public Startup(ILogger logger)
{
_logger = logger;
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// Add NLog to the logging system
loggerFactory.AddNLog();
// Create configuration object and load NLog.config
var configuration = new NLog.Config.LoggingConfiguration();
LogManager.LoadConfiguration("nlog.config");
// Filter unwanted chatter by level or category
configuration.AddRule(LogLevel.Info, LogLevel.Fatal, "Microsoft.AspNetCore.Hosting.*", LogLevel.None);
configuration.AddRule(LogLevel.Trace, LogLevel.Fatal, "MyNamespace.*", LogLevel.Debug);
// Apply configuration to loggerFactory
loggerFactory.ConfigureNLog(configuration);
// Use logger
_logger.LogInformation("Application started");
// ...
}
}
在上面的代码中,我们首先将 NLog 添加到日志系统,并创建了一个 NLog 配置对象,然后加载 NLog 的配置文件。最后,我们使用 .AddRule() 方法过滤级别或类别,以过滤掉不必要的信息。在上面的示例中,我们通过级别过滤掉了 Microsoft.AspNetCore.Hosting 命名空间中的所有信息,并通过类别过滤掉了 MyNamespace 命名空间中的所有跟踪信息。
当我们将上面的代码应用于 ASP.NET Core 应用时,可以根据需要更改 AddRule() 方法的参数以过滤不同级别和类别的信息。