डिफ़ॉल्ट रूप से बंद libavformat त्रुटि संदेश बदल सकते हैं, libavformat, stderr
को त्रुटि संदेश लिखते हैं जैसा:मैं कैसे
Estimating duration from bitrate, this may be inaccurate
मैं इसे कैसे बंद कर सकते हैं? या बेहतर अभी तक, इसे अपने स्वयं के साफ लॉगिंग समारोह में पाइप करें?
संपादित करें: किसी अन्य जगह पर stderr को पुनर्निर्देशित करना स्वीकार्य नहीं है क्योंकि मुझे अन्य लॉगिंग उद्देश्यों के लिए इसकी आवश्यकता है, मैं सिर्फ libavformat को लिखने के लिए नहीं चाहता हूं।
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream file("file.txt");
streambuf *old_cerr = cerr.rdbuf();
cerr.rdbuf (file.rdbuf());
cerr << "test test test" << endl; // writes to file.txt
// ...
cerr.rdbuf (old_cerr); // restore orginal cerr
return 0;
}
संपादित करें:: के बाद सवाल संपादन, मैं ऊपर कोड के बारे में चेतावनी दी है कि यह सब cerr
प्रविष्टि रीडायरेक्ट करेगा
या तो http://stackoverflow.com/questions/5095839/redirect-from-stderr-to-another-file-descriptor या http://stackoverflow.com/questions/573724/how-can-i-redirect देखें -स्ट-आउट-टू-कुछ-दृश्य-डिस्प्ले-इन-ए-विंडोज-एप्लिकेशन –
मैं प्रोग्राम के stderr के पूरे आउटपुट को रीडायरेक्ट नहीं करना चाहता हूं, मेरे पास लॉगिंग फ़ंक्शंस इसे एक साफ स्वरूपित तरीके से लिख रहा है। मैं libavformat बस इसे लिखने के लिए पसंद करेंगे। – amrhassan
क्या वास्तव में stderr लिखता है? यह पहली बार है जब मैंने सुना है कि libavcodec लाइब्रेरी stderr में त्रुटियां भेजती है (उस लाइब्रेरी के साथ मेरा अनुभव बड़ा नहीं है)। –