मैं आईओएस डिवाइस पर एनएसएलओजी आउटपुट को एक फाइल में रीडायरेक्ट करने के लिए here के उत्तर में सुझाव का पालन कर रहा हूं, जो बहुत अच्छा काम करता है। समस्या यह है कि यह डिवाइस पर कंसोल में अब दिखाई नहीं दे रहा है। जो मैं वास्तव में पसंद करूंगा वह कंसोल और फ़ाइल दोनों में stderr स्ट्रीम को टी करने का एक तरीका है। क्या किसी को पता है कि यह कैसे करना है?आईफोन पर फ़ाइल और कंसोल दोनों के लिए stderr लिखें
उत्तर
मुझे एक और थ्रेड (NSLog() to both console and file) पर एक स्वीकार्य उत्तर मिला। कि उत्तर के लिए शैलेश को
if (!isatty(STDERR_FILENO))
{
// Redirection code
}
धन्यवाद:
समाधान प्रदान वहाँ केवल एक फ़ाइल पर रीडायरेक्ट करने अगर एक डिबगर का पता नहीं है, इस तरह है।
अगर हम कथन लिखते हैं तो हमें यह कहां लिखना चाहिए? ऐप प्रतिनिधि में या क्या हमें इसे प्रत्येक दृश्य नियंत्रक में लिखना है? – Max
आपको यह कोड लिखना चाहिए यदि कोड को एन्सेप्लेट करने के लिए कथन जो फ़ाइल में stderr को रीडायरेक्ट करता है। –
एक बार जब आप freopen()
फ़ाइल डिस्क्रिप्टर के बाद, आप इसे पढ़ सकते हैं और डेटा के साथ कृपया कर सकते हैं। this से कुछ विचार आपके लिए उपयोगी होंगे।
आप या तो इसे वापस स्टडीआउट पर लिख सकते हैं, या सीधे /dev/console
पर लिखने का प्रयास कर सकते हैं। मैंने कभी भी आईफोन पर /dev/console
खोलने की कोशिश नहीं की है, लेकिन मुझे लगता है कि सैंडबॉक्स के बाहर होने के बावजूद यह संभव है। मुझे यकीन नहीं है कि ऐप समीक्षा प्रक्रिया इसका इलाज कैसे करेगी।
या आप एक टीसीपी सॉकेट पर रीडायरेक्ट कर सकते हैं और रिमोट टेलनेट क्लाइंट पर देख सकते हैं। इस तरह XCode के लिए कोई ज़रूरत नहीं है!
मूल रूप से:
एक मानक सी समारोह जो एक Obj सी स्थिर प्रणाली को बुलाती है बनाएँ:
void tcpLogg_log(NSString* fmt, ...) { va_list args; va_start(args, fmt); [TCPLogger tcpLog:fmt :args]; va_end(args); }
स्थिर Obj सी विधि:
(void)tcpLog:(NSString*)fmt :(va_list)args { NSLogv(fmt, args);
}if(sharedSingleton != nil && sharedSingleton.socket != nil) { NSString *time = [sharedSingleton.dateFormat stringFromDate:[NSDate date]]; NSString *msg = [[NSString alloc] initWithFormat:fmt arguments:args]; mach_port_t tid = pthread_mach_thread_np(pthread_self()); NSString *str = [NSString stringWithFormat:@"%@[%X]: %@\r\n", time, tid, msg]; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; [sharedSingleton.socket writeData:data withTimeout:NETWORK_CLIENT_TIMEOUT_PERIOD tag:0]; }
फिर अपने .pch फ़ाइल में, NSLog()
define NSLog(...) tcpLogg_log(__VA_ARGS__); void tcpLogg_log(NSString* fmt, ...);
ओवरराइड करने के लिए बेशक अधिक जानकारी के टीसीपी सॉकेट को संभालने के लिए आवश्यक हैं निम्नलिखित पंक्तियाँ जोड़ें। वर्किंग सोर्स कोड यहां उपलब्ध है: https://github.com/driedler/iOS-TCP-Logger/wiki/About
- 1. NSLog() दोनों कंसोल और फ़ाइल
- 2. एक लॉगफाइल पर STDOUT और STDERR लिखें,
- 3. मैं टर्मिनल और लॉग फ़ाइल पर जाने के लिए STDOUT और STDERR दोनों कैसे प्राप्त करूं?
- 4. एक फाइल करने के लिए दोनों stdout और stderr रीडायरेक्ट करने के लिए
- 5. फ़ाइल लॉग करने के लिए stderr और tee गूंज?
- 6. आईफोन और एंड्रॉइड दोनों के लिए ऐप्स विकसित करना
- 7. रेल कंसोल को लिखें
- 8. आईफोन सिम्युलेटर और डिवाइस दोनों के लिए लाइब्रेरी कैसे बनाएं?
- 9. कंसोल और जीयूआई दोनों के रूप में प्रोग्राम
- 10. 32 और 64 बिट दोनों के लिए फ़ाइल बनाएं
- 11. आईफोन और एंड्रॉइड दोनों पर ईमेल भेजने के लिए क्यूआर कोड बनाएं
- 12. फ़ाइल के लिए एंड्रॉइड लॉगकैट डेटा लिखें
- 13. फोर्क() और एसटीडीओयूटी/एसटीडीईआरआर बाल प्रक्रियाओं से कंसोल पर
- 14. एक पाठ फ़ाइल और कंसोल
- 15. रूबी स्क्रिप्ट के लिए फ़ाइल करने के लिए मैं stderr और stdout को रीडायरेक्ट कैसे करूं?
- 16. stderr का उपयोग किये बिना किसी फ़ाइल में stdout को रीडायरेक्ट करने के बाद टर्मिनल पर लिखें?
- 17. "सीर" और "stderr" क्या हैं?
- 18. पॉपिंग stderr और stdout
- 19. एंड्रॉइड बिटमैप पिक्सल - सीधे फ़ाइल पर लिखें?
- 20. पुनर्निर्देशन nohup के stderr
- 21. विम फिल्टर और stdout/stderr
- 22. फसल में कंसोल को कैसे लिखें?
- 23. एक टेक्स्ट फ़ाइल बनाएं और उस पर लिखें
- 24. कैसे hava javac compiler आउटपुट को फ़ाइल और कंसोल दोनों में लिखते हैं?
- 25. लॉगिंग stdout और stderr बयान
- 26. सी #: बाइट सरणी को कंसोल करने और कंसोल पर प्रिंट करने के लिए कनवर्ट करना
- 27. आईफोन पर डिवाइस कंसोल की सामग्री को कैसे पढ़ा जाए?
- 28. संलग्न stderr करने के लिए पाठ बैश
- 29. फ़ाइल को कंसोल करने और सहेजने के लिए प्रतिक्रिया शीर्षलेख मुद्रित करने के लिए कैसे?
- 30. एंड्रॉइड एनडीके फ़ाइल लिखें
[NSLog() दोनों कंसोल और फ़ाइल के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/9619708/nslog-to-both-console-and-file) – AechoLiu