मैं आईओएस सिम्युलेटर से कंसोल लॉग कैसे प्राप्त कर सकता हूं?


241

मैं देखना चाहता हूं कि अगर आईओएस में ऐप को टेस्ट नहीं कर रहा हूं तो आईओएस सिम्युलेटर में क्या होता है।

उदाहरण के लिए, यदि मैं सफारी सिम्युलेटर में एक लिंक खोलता हूं, तो देखें कि कंसोल में क्या होता है, या यदि मैं एक वेब-एप्लिकेशन इंस्टॉल करता हूं, तो उन लिंक देखें जो मैं कंसोल में दबा रहा हूं।

मैं यह कैसे कर सकता हूँ?

मैं इसे Xcode या Terminal में देखना चाहता हूं, लेकिन यदि मुझे किसी अन्य सॉफ़्टवेयर का उपयोग करने की आवश्यकता है तो यह कोई समस्या नहीं है।


इन्हें भी देखें: stackoverflow.com/a/29310542/59087
डेव जार्विस

जवाबों:


271

iOS सिम्युलेटर> मेनू बार> डीबग> ओपन सिस्टम लॉग


पुराने तरीके:

आईओएस सिम्युलेटर अपने लॉग को सीधे स्टडआउट में प्रिंट करता है, जिससे आप सिस्टम लॉग के साथ मिश्रित लॉग देख सकते हैं।

टर्मिनल खोलें और टाइप करें: tail -f /var/log/system.log

फिर सिम्युलेटर चलाएं।

संपादित करें:

यह Mavericks / Xcode 5 पर काम करना बंद कर देता है। अब आप अपने ही फ़ोल्डर में सिम्युलेटर लॉग का उपयोग कर सकते हैं: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

आप इसे देखने के लिए या तो Console.app का उपयोग कर सकते हैं, या बस एक पूंछ कर सकते हैं (उदाहरण के लिए iOS 7.0.3 64 बिट्स):

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

संपादित करें 2:

वे अब में स्थित हैं ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log


8
क्या यह अभी भी सटीक है? मैं console.logइन लॉग का उपयोग करके कुछ भी नहीं देख रहा हूँ tailयाConsole.app
जेफ

3
मुझे OSX 10.10 पर कोई परिणाम नहीं मिल रहा है। उन लॉग देखते हैं, लेकिन मेरी सिम्युलेटर संस्करण 8.1 है और लॉग सभी संस्करणों 7.1 * हैं
भाषा

65
iOS सिम्युलेटर> मेनू बार> डिबग> ओपन सिस्टम लॉग
pkamb

4
धन्यवाद! इसके ~ / पुस्तकालय / लॉग / कोरसिम्युलेटर / <सिम्युलेटर-हैश> / सिस्टम.लॉग हालांकि इन दिनों।
कैलिमार्कस

6
BYossarian का उत्तर "सही" है। "डेस्कटॉप सफारी में मेनू विकसित करें जो आपको आईओएस सिम्युलेटर कंसोल को देखने की सुविधा देता है: डेवलप -> आईफोन सिम्युलेटर -> साइट का नाम"
स्नोबोज़ोहन

224

आप डेस्कटॉप सफ़ारी के माध्यम से iOS सिम्युलेटर के लिए कंसोल देख सकते हैं। यह उसी तरह है जैसे आप भौतिक आईओएस उपकरणों के लिए कंसोल को देखने के लिए डेस्कटॉप सफारी का उपयोग करते हैं।

जब भी सिम्युलेटर चल रहा होता है और एक वेबपेज खुला होता है, तो डेस्कटॉप सफारी में डेवलप मेनू के तहत एक विकल्प होगा जो आपको आईओएस सिम्युलेटर कंसोल को देखने की सुविधा देगा:

विकसित -> iPhone सिम्युलेटर -> साइट का नाम


31
यह सबसे अच्छा जवाब है, जैसा कि ब्राउज़र का "वास्तविक" कंसोल है और आप मक्खी पर जावास्क्रिप्ट कमांड निष्पादित कर सकते हैं। धन्यवाद।
जॉर्ज फ्यूएंटेस गोंजालेज

4
मैंने इस दस्तावेज को कहीं और क्यों नहीं देखा है? प्रतिभाशाली।
शलजम

4
वेब इंस्पेक्टर (जब इस तरह से एक्सेस किया जाता है) मेरे लिए पूरी तरह से खाली दिखाई देता है (मेवेरिक्स मैकबुक प्रो - सभी अपडेट इंस्टॉल किए गए - सफारी 7.0.5)
जामिस

5
सफारी का पता लगाने के लिए लगता है कि एक साथ खुला है, लेकिन यह बताता है कि "कोई
निरीक्षण योग्य

4
आप किस बारे में बात कर रहे हैं ... यह सिर्फ सिम्युलेटर के किसी वेबव्यू में खोली गई वेबसाइट के लिए वेब डिबगर को खोलता है। आपके द्वारा देखे गए कंसोल संदेश जावास्क्रिप्ट संदर्भ पर लॉग इन हैं। वे ios सिम्युलेटर के लॉग नहीं हैं। क्या मैं कुछ भूल रहा हूँ? हो सकता है कि 2013 के बाद से सेब में कुछ बदलाव आया हो, लेकिन आज तक इस जवाब में सवाल के शीर्षक के लिए एक हास्यास्पद उच्च स्कोर है
रादु सिमियोनेस्कु

107

सिम्युलेटर में एक विकल्प है खोलने के लिए console

Debug > Open System Log

या का उपयोग करें

keyboard shortcut: ⌘/

सिम्युलेटर मेनू स्क्रीनशॉट


90

iOS 8 और iOS 9

IOS 8 और iOS 9 के तहत यह स्थान अब है:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

तो, निम्नलिखित काम करेगा:

tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log

DEVICE_CODEमूल्य निम्नलिखित कंसोल आदेश के माध्यम से पाया जा सकता है:

instruments -s devices

1
डिवाइस पहचानकर्ता को खोजने के लिए: Xcode में, Windows> डिवाइस पर क्लिक करें। एक उपकरण और पहचानकर्ता को दाहिने हाथ के फलक में प्रदर्शित किया जाएगा।
नीलको

3
आप instruments -s devicesसांत्वना में टाइप कर सकते हैं
viteinfinite

2
s / कंसोल / टर्मिनल विंडो /
22

यह मेरे लिए काम नहीं किया। xcrun simctl spawn booted log stream --level=debug | grep App_Debug_Stringकाम किया।
जंग लगी

29

आपको भरोसा नहीं करना चाहिए instruments -s। कमांड लाइन से सिमुलेटर के साथ काम करने के लिए आधिकारिक रूप से समर्थित उपकरण है xcrun simctl

डिवाइस के लिए लॉग डायरेक्टरी के साथ पाया जा सकता है xcrun simctl getenv booted SIMULATOR_LOG_ROOT। स्थान बदलने पर भी यह हमेशा सही रहेगा।

अब जब चीजें आगे बढ़ रही हैं os_logतो होस्ट मैक पर Console.app खोलना आसान है। बूट किए गए सिमुलेटर को भौतिक उपकरणों की तरह, बाईं ओर लॉग स्रोत के रूप में दिखाना चाहिए। आप बूट सिम्युलेटर में लॉग कमांड भी चला सकते हैं:

# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug

# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'

# a log dump that Console.app can open
xcrun simctl spawn booted log collect

# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`

यदि आप सिम्युलेटर में एक वेबपेज के साथ सफारी डेवलपर टूल (जेएस कंसोल सहित) का उपयोग करना चाहते हैं : सिमुलेटरों में से एक शुरू करें, सफारी खोलें, फिर अपने मैक पर सफारी पर जाएं और आपको मेनू में सिम्युलेटर देखना चाहिए।

आप सफारी एड्रेस बार से ड्रैग करके और सिम्युलेटर विंडो पर ड्रॉप करके सिम्युलेटर में एक URL खोल सकते हैं। आप भी इस्तेमाल कर सकते हैं xcrun simctl openurl booted <url>


Xcode 9.3, iOS 11 के अनुसार अब यह सही उत्तर है। अन्य उत्तरों में उल्लिखित स्थान अब सही नहीं हैं।
माइकल मैकगुएर

इसने मेरे लिए Xcode संस्करण 10.1 (10B61), iOS 12.1 सिम्युलेटर पर काम किया। Emacs में iOS ऐप कंसोल आउटपुट देखने के लिए इसका उपयोग करना। अन्य उत्तरों ने अतीत में काम किया, लेकिन अब नहीं।
tboyce12

मेरे लिए, जो चीज़ काम करती थी वह क्रम था (मैं सिम्युलेटर से पहले सफारी खुला था और इसलिए मेनू प्रविष्टि सफारी में दिखाई नहीं दी)!
Shmarkus

आपको "विधेय" ध्वज के लिए प्रलेखन कहां मिला?
हज़ुले

MacOS 11 और iOS 14 सिमुलेटर के लिए नया: log help predicatesआपको अधिक जानकारी देगा। विधेय प्रारूप NSPredicate का अनुसरण करता है।
russbishop

18

यदि आप स्विफ्ट का उपयोग कर रहे हैं , तो याद रखें कि printlnकेवल डिबग लॉग पर प्रिंट होगा (जो कि एक्सकोड के डीबग क्षेत्र में दिखाई देता है)। यदि आप system.log पर प्रिंट करना चाहते हैं, तो आपको NSLogपुराने दिनों में उपयोग करना होगा ।

फिर आप सिम्युलेटर मेनू को इसके मेनू के माध्यम से देख सकते हैं, डिबग> ओपन सिस्टम लॉग ... (cmd + /)


12

टेलिंग /var/log/system.logमेरे काम नहीं आई। मैंने अपने लॉग का उपयोग करके पाया Console.app। वे अंदर थे

~/Library/Logs/iOS Simulator/{version}/system.log


यह लॉग से वापस देखने के लिए एक शानदार तरीका है, जैसे दिन पहले।
ट्रॉय

10

आप Consoleअपने मैक पर एप्लिकेशन का उपयोग कर सकते हैं (डिवाइस में अपने डिवाइस का चयन करें) एक लॉग संदेश देखने के लिए जिसे उपयोग करके भेजा गया था NSLog(आप printफ़ंक्शन के साथ लॉग नहीं देखेंगे )।

यहां छवि विवरण दर्ज करें

कृपया ध्यान दें कि यदि आप एक लॉग देखना चाहते हैं तो आपको WebViewइसका उपयोग करना चाहिएSafary -> Develop -> device

[दुर्घटना लॉग का पता लगाएं]


प्रेस cmd then space bar टाइप " Console" दबाएँ enter। Btw। आज इसका सही उत्तर होना चाहिए।
लोनली

7

XCode> 6.0 और iOS> 8.0 यदि आपके पास XCode संस्करण> 8.0 है तो नीचे दी गई स्क्रिप्ट काम करती है

मैं सिस्टम कंसोल पर सिम्युलेटर लॉग को पूंछने के लिए नीचे की छोटी स्क्रिप्ट का उपयोग करता हूं।

#!/bin/sh
sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log

आप एक तर्क के रूप में ग्रीप में प्रयुक्त सिम्युलेटर प्रकार में पास कर सकते हैं। जैसा कि उपरोक्त पोस्टों में उल्लेख किया गया है, एक्सकोड संस्करण के आधार पर उपयोग के लिए उपलब्ध सिमुलेटर के प्रकार को देखने के लिए सिम्टल और इंस्ट्रूमेंट्स कमांड हैं। उपलब्ध उपकरणों / सिमुलेटरों की सूची देखने के लिए।

xcrun instruments -s

या

xcrun simctl list

अब आप डिवाइस कोड या सिम्युलेटर प्रकार में स्क्रिप्ट के तर्क के रूप में पास कर सकते हैं और $ 7 होने के लिए "iPhone 6 (8.2 सिम्युलेटर)" को grep के अंदर बदल सकते हैं।


0

मैं सीधे आईओएस सिम्युलेटर के माध्यम से लॉग खोल सकता हूं: Debug -> Open System Log...निश्चित नहीं कि यह कब पेश किया गया था, इसलिए यह पहले के संस्करणों के लिए उपलब्ध नहीं हो सकता है।


0

आप सफ़ारी टेक्नॉलॉजी पूर्वावलोकन ऐप का उपयोग करके सफ़ारी वेब इंस्पेक्टर और सभी वेब डेवलपमेंट टूल्स सहित सिम्युलेटर कंसोल विंडो देख सकते हैं। सफ़ारी में अपना पेज सिम्युलेटर पर खोलें और फिर सफ़ारी प्रौद्योगिकी पूर्वावलोकन> विकास> सिम्युलेटर पर जाएँ।

वेब विकास उपकरण


0

कोई भी NSLogया printसामग्री नहीं लिखेगा system.log, जो Simulator -> Debug -> Open System logकि Xcode 11 पर चयन द्वारा खुला हो सकता है ।

मैं एक तरह से पता लगाता हूं, एक फ़ाइल में लॉग लिखता हूं और xx.logसाथ खोलता हूं। Terminal.appफिर लॉग Terminal.appजीवंत रूप में पेश करेंगे ।

मैं CocoaLumberjack इसे प्राप्त करने का उपयोग करता हूं

चरण 1:

DDFileLogger DDOSLoggerलॉग पथ जोड़ें और प्रिंट करें। config()जब एप्लिकेशन लंच बुलाया जाना चाहिए।

static func config() {
    #if DEBUG
    DDLog.add(DDOSLogger.sharedInstance) // Uses os_log
    let fileLogger: DDFileLogger = DDFileLogger() // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7
    DDLog.add(fileLogger)
    DDLogInfo("DEBUG LOG PATH: " + (fileLogger.currentLogFileInfo?.filePath ?? ""))
    #endif
}

चरण 2:

के साथ बदलें printया ।NSLogDDLogXXX

चरण 3:

$ tail -f {path of log}

यहां, टर्मिनल .app में संदेश जीवंत रूप में मौजूद होगा।

एक बात और। यदि कोई संदेश लॉग आउट नहीं है, तो सुनिश्चित करें Environment Variables-> OS_ACTIVITY_MODEISNOT अक्षम करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.