2009-05-06 18 views
6

Mozilla LDAP kitaplığını kullanan bir uygulamam var. Sunucuyla bağlantı kurulamayan LDAP kitaplığı ile ilgili bir sorun teşhis ediyoruz. LDAP kitaplığından ek bilgileri lib ile uygulamanın bir hata ayıklama sürümünü atıp ldap_set_opt kullanarak hata ayıklamayı etkinleştirerek almaya çalışıyorum. Maalesef, hata ayıklama kitaplığının standart hataya hata ayıklama dizeleri gönderiyor olduğunu düşünüyorum.Bir Windows hizmetinden standart hata çıktısı nasıl alınır?

LDAP istemci kitaplığını yeniden derlemeye çalışırken, stderr'e akış yerine OutputDebugString öğesini çağıran seçeneği etkinleştirmeyi umarım, stderr çıktısını bir dosyaya çekmek iyi bir çözüm olurdu. Ancak uygulama bir Windows servisi olarak çalışıyor.

Stderr'i hizmet olarak çalışan bir uygulama için nasıl bir dosyaya yönlendirebileceğimi bilen var mı?

düzenlemek

Ben zaten var daha hizmet kaynak kodunun bir daha değiştirmek zorunda değil umuyorum. Servis yapılandırmasındaki seçenekler ideal olacaktır. senin ServiceMain içinde

cevap

5

sen Stderr yönlendirme elle deneyebilir miyim?

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

    // Code that writes to stderr 

    fclose(stderr_redirect);

Düzenleme: hizmetinizdeyiz kendin içeride olanlar akışları işlemek için başka bir hizmet için stdout veya stderr'yi yönlendirmek için bir yolu yoktur

olduğunu. Bazı servisler bu mesajları bir dosyaya yönlendirmek için bir seçenek sunar. Bu akışları geçici olarak yeniden yönlendirebilir veya bir dahaki sefere bir sorunla karşılaştığınızda yapılandırılabilir hale getirmek için hizmetinize bir seçenek ekleyebilirsiniz.

+0

hmm ... iyi, onay Naaff için teşekkürler. Galiba işe başlayacağım. – veefu

+0

Bu yöntem, iç ayıklama kaydedicisi için stderr' 'e' fputs' kullanan log4cxx çalıştı. SetStdHandle' işe yaramadı. – bvj

5

hizmete kod değişiklik yapıyorsanız, sen diyebiliriz SetStdHandle:

SetStdHandle(STD_ERROR_HANDLE, logFileHandle); 
İlgili konular