c++ - 如何捕获 Windows 服务的标准错误输出?

标签 c++ windows service ldap

我有一个使用 Mozilla LDAP 库的应用程序。我们正在诊断涉及 LDAP 库无法连接到服务器的问题。我试图通过将 lib 的调试版本与应用程序一起使用并使用 ldap_set_opt 启用调试来从 LDAP 库中获取更多信息。不幸的是,我认为调试库正在将调试字符串发送到标准错误。

当我再次重新编译 LDAP 客户端库时,希望启用使其调用 OutputDebugString 而不是流式传输到 stderr 的选项,一个不错的解决方案是将 stderr 输出捕获到文件中。不过,该应用程序作为 Windows 服务运行。

有人知道如何将 stderr 重定向到作为服务运行的应用程序的文件吗?

编辑

我希望不必再修改我已有的服务源代码。服务配置中的选项将是理想的。

最佳答案

你能尝试手动重定向 stderr 吗?

    FILE* stderr_redirect = freopen( "C:/stderr.log", "w", stderr );

    // Code that writes to stderr

    fclose( stderr_redirect );

编辑:

除了自己在服务中处理这些流之外,没有办法为服务重定向 stdout 或 stderr。某些服务提供了将这些消息重定向到文件的选项。您可以临时重定向这些流,或者向您的服务添加一个选项,以便在您下次遇到问题时可以对其进行配置。

关于c++ - 如何捕获 Windows 服务的标准错误输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830825/

相关文章:

javascript - ZF2 : How to call a view helper in a service?

AngularJS - 使用 $http 时 Controller 不从服务获取数据

c++ - 不明确的 C++ 编译器错误

c# - 使用 OpenSSL 兼容格式在 C# 中加密,在 Poco 中解密

c++ - NMAKE : fatal error U1077: cl. exe 和 nmake.exe 返回代码 '0x2'

ios - OpenPlug 如何在 Windows 上构建?

windows - 在 Windows 上忽略 Git 中的目录时,目录名称大小写是否重要?

c++ - 测试 aligned_storage 的大小

c++ - 我想接受用户输入并在我的 shell 环境中输出它

linux - 系统重启时自动启动 Asterisk