修改SourceName后Windows服务日志无法在Event Viewer显示的问题
修改Windows服务日志SourceName后无法生成日志的解决办法
问题情况
- 克隆的dotnet Windows服务项目,在VS 17.4.3里正常运行时能生成预期的事件日志警告。
- 但改了
appsettings.Development.json里的SourceName之后,日志就生成不了了,反而弹出错误日志:
无法找到来自源Application的事件ID 0的描述。引发此事件的组件可能未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复该组件。
如果事件源自另一台计算机,则必须随事件一起保存显示信息。
事件中包含以下信息:
无法记录.NET应用程序事件。未找到源,但无法搜索部分或全部事件日志。要创建源,您需要具有读取所有事件日志的权限,以确保新源名称唯一。无法访问的日志:Security、State。
消息资源存在,但在消息表中未找到该消息
问题原因
修改SourceName后,新的事件源未在系统中注册,且当前VS的运行权限不足,无法自动创建新源——创建事件源需要管理员权限,同时要能读取所有事件日志以确认源名称的唯一性。
解决步骤
- 以管理员身份运行VS:关闭当前VS实例,右键点击VS图标选择「以管理员身份运行」,重新启动项目后,.NET会自动尝试注册新的事件源。
- 手动注册事件源:
- 打开管理员权限的PowerShell,执行以下命令(将
YourNewSourceName替换为你设置的新SourceName):New-EventLog -LogName Application -Source "YourNewSourceName" - 注册完成后重启服务项目,即可正常生成日志。
- 打开管理员权限的PowerShell,执行以下命令(将
- 检查权限设置:确保运行服务的账号拥有读取所有事件日志(包括Security、State日志)的权限,避免因权限不足导致无法校验源名称。
内容的提问来源于stack exchange,提问作者Kirsten
相关产品推荐
相关产品推荐

