【发布时间】:2021-09-08 20:22:52
【问题描述】:
我对 ASP.Net Core 比较陌生,这个问题可能是缺乏知识。我正在开发一个 Web 服务,我需要它在生产中记录所有事件(信息及以上)的 Windows 事件日志。我已经使用 PowerShell 创建了一个事件源和一个日志:
New-EventLog -LogName CprNumberService -Source CprNumberService
我无法获得将信息事件记录到 Windows 事件日志的服务,只有警告及以上有效。所有其他记录器都工作得很好,我在 Debug 中看到了所有日志条目。
我尝试更改 appsettings 文件中的设置,这确实对调试日志提供程序有影响,但对事件日志没有影响。
这是我的 appsettings.json 文件:
appsettings.json
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
还有 appsettings.Development.json
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft" : "Information"
}
在 Programs.cs 的 CreateHostBuild 类中,我注册日志如下:
.ConfigureLogging(logging =>
{
// Remember to create windows log
// PS: New-EventLog -LogName CprNumberService -Source CprNumberService
logging.ClearProviders();
logging.AddDebug();
logging.AddConsole();
logging.AddEventLog(new EventLogSettings
{
SourceName = "CprNumberService",
LogName = "CprNumberService"
});
而在实际代码中,我的日志如下:
logger.LogInformation(LoggingEvents.CprSystemEvent, "CPR Web Service started up");
我确信我在这里遇到了一个菜鸟问题,并且我一直在谷歌上搜索很多东西,但到目前为止我还是一无所获。
非常欢迎提出建议和参考。
谢谢, 比亚恩
【问题讨论】:
-
你试过使用 logging.AddEventSourceLogger() 吗?
-
请以管理员身份运行visual studio并再次检查
-
.AddEventSourceLogger 用于事件跟踪,而不用于 Windows 事件日志。 [链接] (stackoverflow.com/questions/47773058/…)
-
我尝试以管理员身份运行,没有区别。
-
最奇怪的是,Windows 事件日志确实收到了所有使用 LogWarning 和 LogError 记录的事件,但没有收到 LogInformation。
标签: c# asp.net-core