2015-01-21 15 views
6

Günlük mesajlarını logback-android kullanarak yeniden yönlendirmeye çalışmak, böylece iletilerin bir dosyaya kaydedilmesi. Ancak, bir dosyaya kaydedilmiyor.Logback-android: Bir dosyaya yazılmayan günlük dosyası

Bu benim Android Studio

<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> 

Bu şimdiye günlüğünü başlatıyorum kod parçasıdır içinde src/main/aktifler altında saklanır benim logback.xml dosya Configration vardır.

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

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



    } 

Sayı: Ben LogCat iletileri görmeye devam, ama ben onları benim android sd kart hafızasında kayıtlı olmasını bekliyoruz.

Eklendi i herhangi bir yapılandırma için benim LogCat herhangi bir hata veya mesajı görmüyorum

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

i bu yapılandırmada bazı şey eksik sd kart günlükleri yazma için manifest'te kullanıcı izni hatalar da. Birisi bana yardım edebilir

+1

Kesinlikle bilmiyorum, bu yüzden bir cevap değil; ancak /data/com.test.equa/files/log/foo.log 'yolu harici depolama değildir; Bu yüzden sözü edilen izin önemli olmamalıdır. Muhtemelen ayrıca/data/data/PACKAGE ... 'dir. SD karta yazmak istiyorsanız, yol 's/sdcard/Android/PACKAGE/....' gibi bir şey olmalı ve o zaman izin önemlidir.Bu sadece başımın üstündedir; bu yüzden cevap vermeye çalışmaktan çok "ne deneyeceğim" daha fazla. :) – Nija

+0

Bunu işaret ettiği için teşekkürler Nija. Paket dizini de kontrol ettim, günlük dosyası da orada yok. Yanıt verdiğiniz için teşekkür ederiz ve bunu işaretleyin .. – Shiv

+0

Logcat'ta tam olarak hangi mesajları görüyorsunuz? –

cevap

0

AndroidManifest.xml dosyasına yapılandırma eklemeyi denediniz mi?

Örnek tezahür (bu link itibaren):

<?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

Yanıt için teşekkürler. Bunu daha önce denedim, ama bir kez daha sıfırdan deneyelim ve – Shiv

+0

No şansını güncellemeye izin ver. Logcat Appender'ı kullanarak iyi çalışır, ancak bunu bir Dosya Ekleyicisi ile değiştirir ve bir dosya sağlarsa, çalışmaz. Kodu kullanarak yapılandırırsam, iyi çalışır. Ancak, uygulamamı basitleştirmek için XML ile yapılandırmak istiyorum. – Shiv

+9

'u paylaşabileceğiniz herhangi bir çalışan örnek kodunuz var mı? Neden bu cevap olarak işaretlendi? –

2

Android için uygulamanız için permissions manually in settings tanımlamak zorunda 6+. Aksi takdirde, manifest.xml dosyasında WRITE_EXTERNAL_STORAGE izni verseniz bile, günlük kaydının harici depolama alanına yazılmasına izin verilmeyecektir.

here'dan çözüm aldım.

+0

Sadece 6,0 için bir OTA güncellemesi aldı! –

+1

Evet, biliyorum .... – LukTar

+0

Meraklı (ve biraz konu dışı) - Eklenti dosyalarını gerçek bir cihazdan yazdığı HTML dosyasının bir kopyasını nasıl yakalarsınız? Yapabileceğini düşünmüyorum? DDMS'yi kullanarak bir AndroidStudio öykünücüsünden mi almanız gerekiyor? –

0

Benim için Nija'nın bu soru hakkındaki ilk yorumu çözülmüştü.

Dosyam etiketi artık şuna benzer:

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

garip düşünce logs.log dosyası (//sdcard olmadan) verilen yolu altında benim dahili depolama ortaya çıktığını, olsa.

Telefonum, ilgili olduğu takdirde Android 6.0.1 çalıştırıyor. Cevabımı bitirmek, yukarıdaki dosya yolunu denemek ve diğer cevapların çalışmadığı durumlarda dahili depolamayı kontrol etmektir.

Güncelleme:

Sadece bilgisayarda günlük dosyasını açmak istedim ama bulamadım. Telefondaki herhangi bir depolama erişim uygulamasıyla (ör. Dosya komutanı) bulabilirim. Ama PC ile tam olarak aynı klasöre bakarken orada değil. Bu yüzden, sizin için yeterince iyi olduğunda bir depolama erişim uygulamasıyla kontrol edin.