目标:
若要在“事件查看器”下的“应用程序和服务日志”下创建自己的自定义日志,请执行以下操作:
代码片段:
.Net核心3.1
Host.CreateDefaultBuilder(args)
.ConfigureLogging((hostContext, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(hostContext.Configuration.GetSection("Logging"));
logging.AddEventLog(
eventLogSettings =>
{
eventLogSettings.LogName = "My Log";
eventLogSettings.SourceName = "Dummy";
});
logging.AddConsole();
});
// somewhere in my code, I use ILogger to write to the log
配置
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Grpc": "Information",
"Microsoft": "Information"
}
}
问题:
在测试我的开发人员机器时,--我在控制台上看到日志条目,但在事件查看器中没有看到日志。如果我删除了LogName,日志将显示在事件查看器上的应用程序日志中。我少了什么?
谢谢!
发布于 2020-07-29 05:35:51
我在应用程序日志中找到了这个:
找不到源应用程序中事件ID 0的说明。引发此事件的组件没有安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复组件。如果事件起源于另一台计算机,则显示信息必须与事件一起保存。
该事件包含以下信息:无法记录.NET应用程序事件。未找到源,但无法搜索部分或所有事件日志。若要创建源,需要具有读取所有事件日志的权限,以确保新的源名称是唯一的。无法访问的日志:安全性。存在消息资源,但在字符串/消息表中找不到消息。
解决方案:
关闭VS并重新打开它“作为管理员”
发布于 2020-11-29 14:17:56
如果“无法记录.NET应用程序事件”,则另一种快速将新应用程序添加为事件源的方法是运行具有提升权限的PowerShell cmdlet。
New-EventLog -Source NAME_OF_APPLICATION -LogName NAME_OF_LOG
NAME_OF_APPLICATION是希望成为数据源的应用程序的名称,而NAME_OF_LOG是希望事件出现在其中的日志的名称。如果NAME_OF_LOG是一个现有的日志,它只会将您的应用程序作为事件源添加到该日志中,如果它是一个新的日志,它将在第一次尝试向其写入事件时创建该日志。
发布于 2020-12-15 19:24:33
我有一个使用.NET Core3.1(3.1.404SDK)用"worker“模板创建的dotnet应用程序
这种添加事件日志的方法不起作用(见下文)
hostBuilder.ConfigureLogging(logging =>
logging.AddEventLog(new EventLogSettings()
{
SourceName = "MySourceName",
LogName = "MyLogName"
}));
而这一次起作用:
hostBuilder.ConfigureServices((hostContext, services) => //DI
{
ConfigureTheServices(hostContext, services);
//This way to add Event Logs does work - (first create the SourceName inside LogName for WindowsEventLog using "admin" credentials
services.Configure<EventLogSettings>(settings =>
{
settings.SourceName = "MySourceName";
settings.LogName = "MyLogName";
});
});
https://stackoverflow.com/questions/63153067
复制相似问题