मैं एंड्रॉइड में लॉग में आउटपुट कैसे लिखूं?


153

मैं इसे लॉगकैट के साथ समीक्षा करने के लिए लॉग में कुछ डिबगिंग आउटपुट लिखना चाहता हूं।

अगर मैं System.out को कुछ लिखता हूं तो यह पहले से ही logcat में प्रदर्शित है।

लॉग को लिखने और मेरे आउटपुट में स्तर और टैग जोड़ने का साफ तरीका क्या है?

जवाबों:


211

में देखो android.util.Log। यह आपको विभिन्न लॉग स्तरों के साथ लॉग को लिखने की सुविधा देता है, और आप आउटपुट को समूहीकृत करने के लिए विभिन्न टैग निर्दिष्ट कर सकते हैं। उदाहरण के लिए

Log.w("myApp", "no network");

टैग myApp और संदेश नेटवर्क के साथ एक चेतावनी आउटपुट करेगा।


का उपयोग करके log.dक्या अलग होगा ?
JMASTER B

5
wमें Log.w(...)चेतावनी के लिए खड़ा है। कर रहे हैं और अधिक : संस्करणों d, डिबग - e, त्रुटि - i- जानकारी, v- वर्बोज़, wtf- क्या एक भयानक विफलता। ;-)
patryk.beza

20

टैग का उपयोग आसानी से अपने आउटपुट को खोजने के लिए किया जाता है, क्योंकि लॉगकैट का आउटपुट कभी-कभी बहुत लंबा हो सकता है। आप अपनी कक्षा में कहीं भी परिभाषित कर सकते हैं:

निजी स्थिर अंतिम स्ट्रिंग TAG = "myApp";

और डीबगिंग के समय इसका उपयोग करें

Log.v (TAG, "कुछ किया");

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

आप केवल टैग के लिए खोज करने के लिए फ़िल्टर भी लागू कर सकते हैं।


17

का प्रयोग करें android.util.Logऔर वहाँ परिभाषित स्थिर तरीके (जैसे e(), w())।



5

कृपया इस तरह से लॉग देखें,

Log.e("ApiUrl = ", "MyApiUrl") (error)
Log.w("ApiUrl = ", "MyApiUrl") (warning)
Log.i("ApiUrl = ", "MyApiUrl") (information)
Log.d("ApiUrl = ", "MyApiUrl") (debug)
Log.v("ApiUrl = ", "MyApiUrl") (verbose)

1

आप RDALogger नामक मेरे परिवाद का उपयोग कर सकते हैं। यहाँ जीथब लिंक है

इस पुस्तकालय के साथ, आप अपना नाम विधि नाम / वर्ग नाम / लाइन नंबर और एंकर लिंक के साथ लॉग इन कर सकते हैं। इस लिंक के साथ, जब आप लॉग पर क्लिक करते हैं, तो स्क्रीन कोड की इस लाइन पर जाती है।

पुस्तकालय का उपयोग करने के लिए, आपको नीचे कार्यान्वयन करना होगा।

जड़ स्तर में ग्रेडन

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

ऐप लेवल ग्रेडेल में

dependencies {
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    }

लाइब्रेरी को इनिशियलाइज़ करने के लिए, आपको इस तरह शुरू करना चाहिए (Application.class में या पहले इस्तेमाल से पहले)

RDALogger.start("TAG NAME").enableLogging(true);

और तुम जो चाहो, उससे तुम लॉग कर सकते हो;

    RDALogger.info("info");
    RDALogger.debug("debug");
    RDALogger.verbose("verbose");
    RDALogger.warn("warn");
    RDALogger.error("error");
    RDALogger.error(new Throwable());
    RDALogger.error("error", new Throwable());

और अंत में आउटपुट आपको वह सब दिखाता है जो आप चाहते हैं (वर्ग का नाम, विधि का नाम, लंगर लिंक, संदेश)

08-09 11:13:06.023 20025-20025/com.ardakaplan.application I/Application: IN CLASS : (ENApplication.java:29)   ///   IN METHOD : onCreate
    info

0
String one = object.getdata();
Log.d(one,"");

2
आमतौर पर अनाम कोड की कुछ पंक्तियों को पोस्ट करने के बजाय किसी समाधान की व्याख्या करना बेहतर होता है। आप पढ़ सकते हैं कि मैं एक अच्छा उत्तर कैसे लिखूं , और पूरी तरह से कोड-आधारित उत्तरों की व्याख्या
अनह फाम

0

हाल ही में मुझे एंड्रॉइड में लॉग लिखने के लिए यह दृष्टिकोण मिला, जो मुझे लगता है कि सुपर कमाल है।

public static final boolean FORCED_LOGGING = true;
private static final int CALLER_STACK_INDEX = 3;

public static void showLogs(String message) {
        if (FORCED_LOGGING) {
            StackTraceElement caller = Thread.currentThread().getStackTrace()[CALLER_STACK_INDEX];

            String fullClassName = caller.getClassName();
            String className = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);
            String methodName = caller.getMethodName();
            int lineNumber = caller.getLineNumber();

            Log.i("*** " + className + "." + methodName + "():" + lineNumber + "\n" , message);
        }
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.