2009-05-06 24 views
6

私は、Mozilla LDAPライブラリを利用するアプリケーションを持っています。 LDAPライブラリがサーバーに接続できないという問題を診断しています。 LDAPライブラリからアプリケーションのlibのデバッグバージョンを投げ、ldap_set_optを使ってデバッグを有効にすることで、追加情報を取得しようとしています。残念ながら、私はデバッグライブラリが標準エラーにデバッグ文字列を送信していると思います。Windowsサービスから標準エラー出力をキャプチャするにはどうすればよいですか?

私はLDAPクライアントライブラリを再度コンパイルしていますが、stderrにストリーミングするのではなくOutputDebugStringを呼び出すオプションを有効にしておきたいときは、stderrの出力をファイルにキャプチャするのがよいでしょう。ただし、アプリケーションはWindowsサービスとして実行されています。

誰かが、サービスとして実行されているアプリケーション用のstderrをファイルにリダイレクトする方法を知っていますか?私は私が既に持っているよりも、サービス・ソース・コードのいずれかのより多くを変更する必要がないように願ってい

編集

。サービス構成のオプションが理想的です。あなたがサービスにコードを変更する場合

答えて

5

あなたはstderrをリダイレクトし、手動で試すことができますか?

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

    // Code that writes to stderr 

    fclose(stderr_redirect);

編集:あなたのサービスを自分の中にあるものをストリームを処理するよりも、他のサービスのための標準出力や標準エラー出力をリダイレクトする方法はあり

ではありません。サービスによっては、これらのメッセージをファイルにリダイレクトするオプションがあります。これらのストリームを一時的にリダイレクトするか、サービスにオプションを追加して、次に問題が発生するように設定することができます。

+0

ええええええええ、まあ、確認ナファのおかげで。私は仕事に着くだろうと思う。 – veefu

+0

このメソッドは、内部デバッグロガーに 'fputs'を' stderr'するlog4cxxで動作しました。 'SetStdHandle'は動作しませんでした。 – bvj

5

、あなたはあなたのServiceMainでSetStdHandleを呼び出すことができます。

SetStdHandle(STD_ERROR_HANDLE, logFileHandle); 
関連する問題