【发布时间】:2018-02-02 08:03:08
【问题描述】:
我想从 ASP.Net Core 应用程序的 Controller 方法写入 Windows 事件日志。
我遇到的问题是,我希望在其中写入日志信息,但我不断收到错误/信息日志:
来自源应用程序的事件 ID xxxx 的描述不能 被发现。未安装引发此事件的组件 在您的本地计算机上或安装已损坏。你可以 在本地计算机上安装或修复组件。
如果事件源自另一台计算机,则显示信息 必须与事件一起保存。
活动中包含以下信息:
My.Fully.Qualified.Namespace.WebApi.Controllers.MyController 错误 发生在方法“MyMethod”中
消息资源存在,但在 字符串/消息表
快速说明一下,在 .Net Core 之前,我一直使用 resolved a similar error by creating the Event Source using Powershell or Command 或正确配置 Microsoft.Practices.EnterpriseLibrary.Logging Application block 或其他第三方库
我使用的方法是:
安装 Nuget 包:Microsoft.Extensions.Logging.Abstractions 和 Microsoft.Extensions.Logging 后,我在 Start Configure 代码块中指定 EventLog Provider。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory
.AddDebug()
.AddEventLog();
//... rest of the code here
}
对于每个控制器,使用ILogger<T> 方法:
public class MyController : Controller
{
private readonly IMyRepository _myRepository;
private readonly ILogger _logger;
public MyController(IMyRepository myRepository,
ILogger<MyController> logger)
{
_myRepository = myRepository;
_logger = logger;
}
public bool MyMethod(MyRequestObject request)
{
try
{
var response = privateDoSomethingMethod(request);
return response.Success;
}
catch (Exception ex)
{
_logger.LogError(6666,ex, "Error occured when doing stuff.");
return false;
}
}
这是基于official documentation on Logging
我已阅读并尝试过的内容:
- Description for event id from source cannot be found
- IIS error -2147024809 when trying to run .NET CORE application
- When launching an ASP.NET 5 MVC 6 Web App in IIS 8.5 I get an HTTP500 and an Event 1001 against the HttpPlatformHandler
- ILogger Interface
- ASP.NET Core Logging Tutorial – What Still Works and What Changed?
【问题讨论】:
-
我正要建议您需要创建始终用于解决此问题的源,但看到您尝试过,我已使用带有 dotnet 核心的 Serilog 写入事件日志(尚未升级到 2.0 ) 所以如果一切都失败了,你可以尝试一下。
标签: c# asp.net-core event-log