2015-01-21 8 views
6

लॉगबैक-एंड्रॉइड का उपयोग करके लॉग संदेशों को रीडायरेक्ट करने का प्रयास कर रहा है, ताकि संदेशों को फ़ाइल में सहेजा जा सके। हालांकि, यह एक फाइल में सहेजा नहीं जा रहा है।लॉगबैक-एंड्रॉइड: लॉग इन फ़ाइल को

यह मेरा logback.xml फ़ाइल configration, जो मेरे Android स्टूडियो

<configuration debug="true"> 
    <!-- Create a file appender for a log in the application's data directory --> 
    <appender name="FILE" class="ch.qos.logback.classic.android.FileAppender"> 
     <file>/data/com.test.equa/files/log/foo.log</file> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <!-- Write INFO (and higher-level) messages to the log file --> 
    <root level="INFO"> 
     <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

इस कोड को जहां मैं प्रवेश की शुरुआत कर रहा हूँ का टुकड़ा है में src/मुख्य/संपत्ति के तहत संग्रहीत किया जाता है है।

@Override 
    public void onCreate() { 
     super.onCreate(); 
     loadData(); 

     Logger log = LoggerFactory.getLogger(MyActivity.class); 
     log.error("Application Data setup in progress"); 



    } 

मुद्दा: मैं logcat में संदेश दिखाई दें, लेकिन मैं उम्मीद कर उन्हें अपने एंड्रॉयड एसडी कार्ड स्मृति में संग्रहीत किया जाना है।

जोड़ा एसडी कार्ड में लॉग writting

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

मैं इस विन्यास में कुछ बात याद आ रही हूँ, के रूप में मैं किसी भी विन्यास के लिए मेरी logcat में किसी भी त्रुटि या संदेश दिखाई नहीं देता के लिए प्रकट में उपयोगकर्ता की अनुमति त्रुटियां भी क्या कोई मेरी मदद कर सकता है

+1

मुझे यकीन नहीं है, इसलिए कोई जवाब नहीं है; लेकिन पथ ' /data/com.test.equa/files/log/foo.log' बाहरी संग्रहण नहीं है; इसलिए उल्लिखित अनुमति से कोई फर्क नहीं पड़ता। यह शायद '/ डेटा/डेटा/पैकेज भी है ...'। यदि आप एसडी कार्ड को लिखना चाहते हैं तो पथ '/ sdcard/एंड्रॉइड/पैकेज/....' जैसा कुछ होना चाहिए और अनुमति तब मायने रखती है।यह सिर्फ मेरे सिर के ऊपर से है; इसलिए जवाब देने की कोशिश करने के मुकाबले यह "मैं आगे क्या कोशिश करूंगा"। :) – Nija

+0

संकेत देने के लिए धन्यवाद निजा। मैंने पैकेज निर्देशिका भी जांच की है, लॉग फ़ाइल भी मौजूद नहीं है। प्रतिक्रिया देने और इंगित करने के लिए फिर से धन्यवाद .. – Shiv

+0

लॉगबैक में आप वास्तव में कौन से संदेश देखते हैं? –

उत्तर

0

क्या आपने AndroidManifest.xml में कॉन्फ़िगरेशन जोड़ने का प्रयास किया था?

उदाहरण प्रकट (इस link से):

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

    <logback> 
     <configuration> 
      <appender 
       name="LOGCAT" 
       class="ch.qos.logback.classic.android.LogcatAppender" > 
       <tagEncoder> 
        <pattern>%logger{0}</pattern> 
       </tagEncoder> 
       <encoder> 
        <pattern>[ %thread ] %msg%n</pattern> 
       </encoder> 
      </appender> 

      <root level="WARN" > 
       <appender-ref ref="LOGCAT" /> 
      </root> 
     </configuration> 
    </logback> 

</manifest> 
+0

प्रतिक्रिया के लिए धन्यवाद। मैंने पहले कोशिश की थी, लेकिन मुझे स्क्रैच से एक और बार कोशिश करने दें और – Shiv

+0

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

+9

साझा कर सकते हैं इसका उत्तर क्यों दिया जाता है? –

2

Android के लिए 6 + आप अपने आवेदन के लिए permissions manually in settings परिभाषित करने के लिए किया है। अन्यथा अगर आप WRITE_EXTERNAL_STORAGE manifest.xml में अनुमति देते हैं तो भी लॉगबैक को बाहरी संग्रहण में लिखने की अनुमति नहीं दी जाएगी।

मैंने here से समाधान लिया।

+0

6.0 के लिए बस एक ओटीए अपडेट प्राप्त हुआ- बेकार! –

+1

हां, मुझे पता है .... – LukTar

+0

उत्सुक (और कुछ हद तक विषय) - आप एचटीएमएल फाइल की एक प्रति कैसे प्राप्त करते हैं जो एक वास्तविक डिवाइस से एपेंडर लॉग फ़ाइल करता है? मुझे नहीं लगता कि आप कर सकते हैं? आपको डीडीएमएस का उपयोग करके एंड्रॉइडस्टूडियो एमुलेटर से इसे पुनर्प्राप्त करना होगा? –

0

मेरे लिए यह प्रश्न पर निजा की पहली टिप्पणी द्वारा हल किया गया था।

मेरे फ़ाइल टैग अब इस तरह दिखता है:

<file>/sdcard/Android/data/[my-package-from-AndroidManifest]/logs.log</file> 

अजीब लगता है कि यह है, कि logs.log फ़ाइल दिए गए पथ के तहत मेरी आंतरिक भंडारण पर दिखाई दिया (/ sdcard के बिना /)।

मेरा फोन एंड्रॉइड 6.0.1 चल रहा है, जो प्रासंगिक है।

मेरा उत्तर निष्कर्ष निकालना है कि उपरोक्त फ़ाइल पथ को आजमाएं और अन्य उत्तरों काम नहीं करते हैं तो आंतरिक संग्रहण जांचें।

अद्यतन:

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

संबंधित मुद्दे