首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未显示自定义事件日志

未显示自定义事件日志
EN

Stack Overflow用户
提问于 2020-07-29 11:56:20
回答 3查看 2.5K关注 0票数 2

目标:

若要在“事件查看器”下的“应用程序和服务日志”下创建自己的自定义日志,请执行以下操作:

代码片段:

.Net核心3.1

代码语言:javascript
代码运行次数:0
运行
复制
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

配置

代码语言:javascript
代码运行次数:0
运行
复制
    "Logging": {
      "LogLevel": {
        "Default": "Debug",
        "System": "Information",
        "Grpc": "Information",
        "Microsoft": "Information"
     }
   }

问题:

在测试我的开发人员机器时,--我在控制台上看到日志条目,但在事件查看器中没有看到日志。如果我删除了LogName,日志将显示在事件查看器上的应用程序日志中。我少了什么?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-29 13:35:51

我在应用程序日志中找到了这个:

找不到源应用程序中事件ID 0的说明。引发此事件的组件没有安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复组件。如果事件起源于另一台计算机,则显示信息必须与事件一起保存。

该事件包含以下信息:无法记录.NET应用程序事件。未找到源,但无法搜索部分或所有事件日志。若要创建源,需要具有读取所有事件日志的权限,以确保新的源名称是唯一的。无法访问的日志:安全性。存在消息资源,但在字符串/消息表中找不到消息。

解决方案:

关闭VS并重新打开它“作为管理员”

票数 3
EN

Stack Overflow用户

发布于 2020-11-29 22:17:56

如果“无法记录.NET应用程序事件”,则另一种快速将新应用程序添加为事件源的方法是运行具有提升权限的PowerShell cmdlet。

代码语言:javascript
代码运行次数:0
运行
复制
New-EventLog -Source NAME_OF_APPLICATION -LogName NAME_OF_LOG

NAME_OF_APPLICATION是希望成为数据源的应用程序的名称,而NAME_OF_LOG是希望事件出现在其中的日志的名称。如果NAME_OF_LOG是一个现有的日志,它只会将您的应用程序作为事件源添加到该日志中,如果它是一个新的日志,它将在第一次尝试向其写入事件时创建该日志。

票数 2
EN

Stack Overflow用户

发布于 2020-12-16 03:24:33

我有一个使用.NET Core3.1(3.1.404SDK)用"worker“模板创建的dotnet应用程序

这种添加事件日志的方法不起作用(见下文)

代码语言:javascript
代码运行次数:0
运行
复制
hostBuilder.ConfigureLogging(logging =>
    logging.AddEventLog(new EventLogSettings()
    {
        SourceName = "MySourceName",
        LogName = "MyLogName"
    }));

而这一次起作用:

代码语言:javascript
代码运行次数:0
运行
复制
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";
                });
            });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63153067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档