पर syslog पर क्लोग करें मैं एक सी ++ प्रोग्राम पर यूनिक्स पर काम करता हूं जो syslog को संदेश भेजता है।रीडायरेक्ट सी ++ std :: यूनिक्स
वर्तमान कोड syslog सिस्टम कॉल का उपयोग करता है जो printf की तरह काम करता है।
अब मैं उस उद्देश्य के लिए एक धारा का उपयोग करना पसंद करूंगा, आमतौर पर निर्मित std :: clog। लेकिन क्लोग केवल आउटपुट को रीडरर पर रीडायरेक्ट करता है, सिसलॉग के लिए नहीं और यह मेरे लिए बेकार है क्योंकि मैं अन्य प्रयोजनों के लिए stderr और stdout का भी उपयोग करता हूं।
मैं another answer कि यह rdbuf() का उपयोग कर एक फ़ाइल में पुनर्निर्देशित करने के लिए काफी आसान है में देखा है, लेकिन मुझे लगता है कि विधि syslog कॉल करने के लिए लागू करने के लिए openlog एक फ़ाइल हैंडलर वापस नहीं करता है के रूप में कोई रास्ता नहीं देख मैं एक टाई इस्तेमाल कर सकते हैं उस पर धारा।
क्या ऐसा करने का कोई और तरीका है? (यूनिक्स प्रोग्रामिंग के लिए बहुत बुनियादी दिखता है)?
संपादित करें: मैं ऐसे समाधान की तलाश में हूं जो बाहरी पुस्तकालय का उपयोग न करे। @Chris क्या प्रस्तावित कर रहा है एक अच्छी शुरुआत हो सकती है लेकिन स्वीकार्य उत्तर बनने के लिए अभी भी थोड़ा अस्पष्ट है।
संपादित करें: Boost.IOStreams का उपयोग ठीक है क्योंकि मेरी परियोजना पहले से ही बूस्ट का उपयोग करती है।
बाहरी पुस्तकालय के साथ लिंक करना संभव है लेकिन यह चिंता भी है क्योंकि यह जीपीएल कोड है। निर्भरता भी एक बोझ है क्योंकि वे अन्य घटकों के साथ संघर्ष कर सकते हैं, मेरे लिनक्स वितरण पर उपलब्ध नहीं हो सकते हैं, तीसरे पक्ष की बग, आदि पेश कर सकते हैं। यदि यह एकमात्र समाधान है तो मैं पूरी तरह से धाराओं से बचने पर विचार कर सकता हूं ... (एक करुणा)।
सिर्फ एक संदेश स्ट्रिंग की तुलना में अधिक की आवश्यकता है, इसे 'त्रुटि स्तर' और इसी तरह की भी आवश्यकता होती है। मुझे यकीन नहीं है कि धाराओं का उपयोग करना संभव है या नहीं। शायद मैनिपुलेटर्स के साथ (बस 'std :: हेक्स' की तरह)? – ereOn
उपलब्ध लॉगिंग पुस्तकालयों पर एक नज़र डालें। कई लोग आपको अपना संदेश लिखने के लिए अपने स्वयं के बैकएंड लिखने की अनुमति देंगे जहां भी आप उन्हें लिखना चाहते हैं। कई अंतर्निर्मित फ़िल्टरिंग और अन्य अच्छी सुविधाओं के साथ भी आते हैं। केवल कुछ हल्के वजन वाले लोग हैं जो केवल छोटे सामान के साथ आते हैं, लेकिन यदि आप चाहें तो उन्हें पा सकते हैं। मैं इसका उपयोग कर रहा हूं: http://www.templog.org/ यह केवल कुछ स्रोत फ़ाइल है, लगभग सभी शीर्षकों में, और संकलन-समय (समय-महत्वपूर्ण कोड के लिए) के साथ-साथ रन- पहर। लेकिन आप किसी और को पसंद कर सकते हैं। बस पहिया का पुन: आविष्कार न करें। – sbi
यदि यह अंतर्निर्मित क्लोग का उपयोग करके नहीं किया जा सकता है, तो एक अन्य उपयोगकर्ता परिभाषित विशेष धारा लगभग उतनी ही अच्छी होगी, अगर मैनिपुलेटर्स या सदस्य फ़ंक्शन का उपयोग करके स्तर सेट किया गया है तो मुझे बहुत परवाह नहीं है। – kriss