2009-05-06 113 views
6

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

虽然我正在重新编译LDAP客户端库,希望启用使其调用OutputDebugString而不是流到stderr的选项,但一个很好的解决方案是将stderr输出捕获到文件。该应用程序虽然作为Windows服务运行。

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

编辑

我希望不要有修改任何更多的服务的源代码的比我已经有了。服务配置中的选项是理想的。

回答

5

你可以尝试手动重定向标准错误?

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

    // Code that writes to stderr 

    fclose(stderr_redirect);

编辑:

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

+0

嗯......好,谢谢你的确认Naaff。我想我会去工作。 – veefu 2009-05-06 18:59:50

5

如果要修改代码的服务,你可以调用SetStdHandle在你的ServiceMain:

SetStdHandle(STD_ERROR_HANDLE, logFileHandle); 
相关问题