Asp.net core mvc MVC6标准日志消息

Asp.net core mvc MVC6标准日志消息,asp.net-core-mvc,Asp.net Core Mvc,我正在MVC应用程序中实现日志记录 我注意到以下两条消息正在自动记录: “信息:请求已成功匹配名为‘XXX’的路由” 和模板“XXX”。“详细说明:正在执行操作” 我的问题是是否有可能关闭这些消息以及如何实现。我确信它在配置中的某个地方,但我还没有找到它。日志记录有不同的级别,您可以将其设置为更高的级别,这将消除信息级别的日志记录 // LogLevels //Debug = 1, //Verbose = 2, //Information = 3, //Warning = 4, //Error

我正在MVC应用程序中实现日志记录

我注意到以下两条消息正在自动记录:

“信息:请求已成功匹配名为‘XXX’的路由” 和模板“XXX”。“详细说明:正在执行操作”


我的问题是是否有可能关闭这些消息以及如何实现。我确信它在配置中的某个地方,但我还没有找到它。

日志记录有不同的级别,您可以将其设置为更高的级别,这将消除信息级别的日志记录

// LogLevels
//Debug = 1,
//Verbose = 2,
//Information = 3,
//Warning = 4,
//Error = 5,
//Critical = 6,
loggerFactory.MinimumLevel = LogLevel.Warning;

您可以在Configure方法的Startup.cs中设置此选项。您需要添加一个过滤器,该过滤器将忽略您不关心的日志,同时继续允许您关心的日志(如您的代码生成的日志)继续被记录,而不管其级别如何

这将取决于您使用的是哪个
LoggerProvider
,或者您是否正在使用自己的。由于您没有提供任何代码来注册您的
日志提供程序
,因此我将使用作为示例。注第25行:

factory.AddConsole((类别,日志级别)=>logLevel>=logLevel.Critical&&
category.Equals(typeof(Program.FullName));//仅限于程序
上面的类别筛选器将记录器限制为仅记录由
SampleApp.Program
对象生成的项目(另外,只允许
临界
或更高级别的日志,但我们不关心该位)

现在,您可以继续将您想要记录的每个名称空间列入白名单,但将您不想要的名称空间列入黑名单更容易。
Microsoft.AspNet.*
库非常嘈杂,因此您可以添加以下筛选器以阻止它们记录日志:

factory.AddConsole((category,logLevel)=>!category.StartsWith(“Microsoft.AspNet”);

如果您已经运行了自己的
ILogger
,那么您只需要确保已将过滤器作为构造函数参数包含,并且在
ILogger.IsEnabled的实现中引用它。我知道这一点。如果我在警告级别或更高级别记录事情,这将起作用,但我也希望记录信息性消息。我只是不想记录其他噪音。我不需要知道某个路由是否匹配或某个操作是否正在执行。如果您知道这一点,您在问题中没有明确说明。我不知道有什么方法可以禁用其他代码中的信息级日志记录,同时在您自己的代码中启用它,这对我来说似乎是另一个问题。在github上发现此问题,看起来至少consolelogger允许您传入一个过滤函数,因此可能有一些方法可以通过特定的记录器来实现这一点,但不确定我注意到过滤函数的category参数的一般方法。在过去使用过EnterpriseLibrary提供的日志框架之后,我认为category参数表示诸如“General”、“Exceptions”或开发人员指定的任何类别。我没有意识到category参数表示日志项源的类型名。也许这个参数应该被命名为类似于source的名称。无论如何,您提供的信息正是我想要的。@JasonRichmeier好吧,您在创建记录器时设置了类别,因此,如果您选择将其设置为“常规”和“异常”,您不必将其设置为类型名称,尽管它有帮助:)