我有一个使用 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/