我关注这个文档登录 .NET Core 和 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 中没有任何内容。有什么我错过的吗?
您可以采用仅配置的方法,保留现有的CreateHostBuilder
代码按原样。
正如您链接的文档中提到的,在Windows 事件日志部分, the EventLogProvider
未显式配置时默认为警告级别:
与其他提供程序不同,EventLog 提供程序不继承
默认非提供商设置。
如果 EventLog 日志设置未设置
指定后,它们默认为 LogLevel.Warning。
将此日志记录级别降低到Information
,你必须预见到一个明确的条目EventLog
提供者在Logging
你的部分appsettings.{Environment}.json
file.
E.g.: appsettings.Development.json
:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},
"EventLog": {
"LogLevel": {
"Default": "Information"
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)