【问题标题】:Poco Logs not correctly displayed in Windows EventViewerPoco 日志未正确显示在 Windows 事件查看器中
【发布时间】:2023-03-10 23:30:01
【问题描述】:

我有一个简单的应用程序,它使用 Poco::LoggerPoco::EventLogChannel 将日志消息写入 Windows EventViewer。

在我以管理员权限运行我的程序后,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog 下的注册表项被创建,CategoryMessageFileEventMessageFile 键指向Windows/System32 文件夹内的PocoFoundation.dll。我已将dll 复制到该位置。

但在 EventViewer 中会显示日志消息,但没有其他信息。它只是说:

找不到来自源 RRWS 的事件 ID 51001 的描述。无论是 引发此事件的组件未安装在您的本地计算机上或 安装已损坏。您可以在本地安装或修复组件 电脑。

如果事件源自另一台计算机,则必须保存显示信息 与事件。

活动中包含以下信息:

测试日志消息

消息资源存在,但在字符串/消息中找不到消息 表

对我来说,Eve​​ntViewer 似乎无法找到 dll

有人知道如何解决这个问题吗?

【问题讨论】:

  • 您是“手动”(通过explorer.execmd.exe,它们是64 位进程)还是以编程方式从您的应用程序将DLL 复制到那里?假设您的应用程序是 32 位的(因为您使用的是 PocoFoundation.dll,而不是 PocoFoundation64.dll),由于 File System Redirector,DLL 可能最终位于不同的文件夹中(除非您明确指定 Sysnative 别名以绕过重定向) .另外,我认为您需要重新启动 Windows 事件查看器以刷新其注册事件源列表。
  • 在注册表中设置值时,如果使用%SystemRoot%等环境变量来定义路径,请务必使用REG_EXPAND_SZ而不是REG_SZ,如KB166902中所述。无论如何,为什么要将应用程序的 DLL 放入系统文件夹中?也许您的应用程序的安装文件夹会更好?
  • @heapunderrun 我只是在检查它是否通常能够找到 dll 并检查不同的方法。我尝试了这两个版本,PocoFoundation.dll 和我的应用程序构建为32 Bit 以及PocoFoundation64.dll 和我的应用程序构建为64 Bit。注册我的应用程序后,我还重新启动了 PC。

标签: c++ windows poco-libraries event-viewer


【解决方案1】:

使用通过cmake 构建的dlls 似乎存在问题,因为cmake 构建的仅命名为PocoFoundationd.dllPocoFoundation.dll,但在EventLogChannel.cpp 内部setUpRegistry() 函数尝试加载PocoFoundation64d.dll,如下所示:

if (disp == REG_CREATED_NEW_KEY)
    {
        std::wstring path;
        #if defined(POCO_DLL)
            #if defined(_DEBUG)
                #if defined(_WIN64)
                    path = findLibrary(L"PocoFoundation64d.dll");
                #else
                    path = findLibrary(L"PocoFoundationd.dll");
                #endif
            #else
                #if defined(_WIN64)
                    path = findLibrary(L"PocoFoundation64.dll");
                #else
                    path = findLibrary(L"PocoFoundation.dll");
                #endif
            #endif
        #endif

这里也提到了:Poco Issue 3304

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多