提问人:tinonetic 提问时间:8/24/2017 最后编辑:tinonetic 更新时间:8/31/2017 访问量:3957
ASP.Net Core 1 日志记录错误 - 找不到源应用程序中的事件 ID xxxx 的说明
ASP.Net Core 1 Logging Error - The description for Event ID xxxx from source Application cannot be found
问:
我想从 ASP.Net Core 应用程序的 Controller 方法写入 Windows 事件日志。
我遇到的问题是,在我希望写入日志信息的地方,我不断收到错误/信息日志:
无法从源应用程序获取事件 ID xxxx 的说明 被发现。引发此事件的组件未安装 或安装已损坏。您可以 在本地计算机上安装或修复组件。
如果事件源自另一台计算机,则显示信息 必须与事件一起保存。
该活动包含以下信息:
My.Fully.Qualified.Namespace.WebApi.Controllers.MyController 错误 发生在方法“MyMethod”中
消息资源存在,但在 字符串/消息表
快速说明一下,在 .Net Core 之前,我总是通过使用 Powershell 或命令创建事件源或正确配置 Microsoft.Practices.EnterpriseLibrary.Logging 应用程序块或其他第三方库来解决类似的错误
我使用的方法是:
安装 Nuget 包后:Microsoft.Extensions.Logging.Abstractions 和 Microsoft.Extensions.Logging,我在“开始配置”代码块中指定 EventLog 提供程序。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory
.AddDebug()
.AddEventLog();
//... rest of the code here
}
对于每个 Controller,请使用 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;
}
}
这是基于日志记录的官方文档
我读过和尝试过:
答:
我无法在 .Net Core 2.0 中使用 loggerFactory.AddEventLog()。由于 Microsoft.Extensions.Logger.EventLog 仅存在于 .net 4.5.1 中,尽管 Nuget 包可用于此处的 2.0.0 ,因此看起来需要将其移植到 Core。
但也许这对你有用。 添加 CustomEventIds
public static class CustomEventIds
{
public const int Debug = 100;
public const int Information = 101;
public const int Warning = 102;
public const int Error = 103;
public const int Critical = 104;
}
和:
_logger.LogInformation(CustomEventIds.Debug, "Starting to do something with input: {0}", "test");
评论