[英]How to write logs to EventLog by ILogger<T> in Asp.net Core?
我按照这个文档Logging in .NET Core and ASP.NET Core ,尝试将日志写入 Windows EventLog。
首先,我在 Windows 事件日志中创建源和日志:
if (!EventLog.SourceExists("MyTestSource"))
{
EventLog.CreateEventSource("MyTestSource", "MyTestLog");
return;
}
它被创建了。
然后,我从我的 ASP.NET Core 应用程序(核心 3.0)的 Program.cs 配置了登录 CreateHostBuilder:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddEventLog(new EventLogSettings
{
SourceName = "MyTestSource",
LogName = "MyTestLog"
});
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
我认为仅此而已。 然后我在我的控制器中使用记录器:
[Route("[controller]")]
[ApiController]
public class ServerController : ControllerBase
{
ILogger<ServerController> _logger = null;
public ServerController(ILogger<ServerController> logger)
{
_logger = logger;
}
[HttpGet("GetServerInfo")]
public string GetServerInfo()
{
_logger.LogInformation("GetServerInfo Called");
return "Hello I'm Server";
}
}
但是 Windows EventLog 中的 MyTestLog 中没有任何内容。 有什么我错过的吗?
它是由Host.CreateDefaultBuilder(args)
引起的,它执行:
.ConfigureLogging(loggingBuilder => {
loggingBuilder.AddFilter<EventLogLoggerProvider>((Func<LogLevel, bool>) (level=>level>=LogLevel.Warning));
}
在引擎盖下。 警告比信息高 1 级,所以...
作为一个解决方案,您可以创建新的HostBuilder
使用new HostBuilder()
并配置它从头开始或致电重写该行为.ConfigureLogging
创建默认的主机制造商后。
您可以采用仅配置方法,将现有的CreateHostBuilder
代码保留CreateHostBuilder
。
如您链接的文档中所述,在Windows Eventlog 部分下, EventLogProvider
在未明确配置时默认为警告级别:
与其他提供程序不同,EventLog 提供程序不继承默认的非提供程序设置。
如果未指定 EventLog 日志设置,则它们默认为 LogLevel.Warning。
要将此日志记录级别降低到Information
,您必须在appsettings.{Environment}.json
文件的Logging
部分预见EventLog
提供程序的显式条目。
例如: appsettings.Development.json
:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},
"EventLog": {
"LogLevel": {
"Default": "Information"
}
}
}
}
尝试将您的日志记录增加到_logger.LogError("GetServerInfo Called"")
并查看它是否有效。如果有效,那么您将必须设置日志过滤
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.