2015-01-21 167 views
6

嘗試使用logback-android重定向日誌消息,以便可以將消息保存在文件中。但是,它不會保存到文件中。Logback-android:Log未寫入文件

這是我logback.xml文件CONFIGRATION,將其存儲在的src/main /資產在我的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> 

這是一張我在哪裏啓動日誌代碼。

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

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



    } 

問題:我繼續看到在logcat中的消息,但我希望他們存儲在我的Android SD卡存儲。

加在清單中的用戶權限的書面方式記錄在SD卡

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

我失去了一些東西在這個配置中,我沒有看到,我logcat中的任何錯誤或消息的任何配置錯誤也。有人可以幫我在這裏

+1

我不確定,因此不是答案;但是路徑' /data/com.test.equa/files/log/foo.log'不是外部存儲;所以提到的許可應該不重要。這可能也是'/ data/data/PACKAGE ...'。如果你想寫入SD卡,路徑應該是'/ sdcard/Android/PACKAGE/....'這樣的權限。這只是我的頭頂;所以它比試圖回答更「我接下來會嘗試」。 :) – Nija 2015-01-21 04:25:18

+0

感謝Nija指出。我也檢查了軟件包目錄,日誌文件也不存在。再次感謝您的回覆並指出.. – Shiv 2015-01-21 04:38:24

+0

您在logcat中看到了什麼信息? – 2015-01-22 03:36:40

回答

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 2015-01-29 00:29:13

+0

不幸。它使用Logcat Appender運行良好,但如果我用文件Appender替換它並提供一個文件,則它不起作用。如果我使用代碼進行配置,它運作良好。但爲了簡化我的應用程序,我期待通過XML進行配置。你有沒有任何工作示例代碼,你可以分享 – Shiv 2015-01-29 00:46:08

+9

爲什麼這被標記爲答案? – 2015-01-31 01:39:58

2

對於Android的6+你必須定義permissions manually in settings爲您的應用程序。否則,即使授予manifest.xml中的WRITE_EXTERNAL_STORAGE權限,也不允許登錄回寫到外部存儲器。

我從here拿出瞭解決方案。

+0

剛剛收到OTA更新6.0-糟糕! – 2017-11-20 16:56:17

+1

是的,我知道...... – LukTar 2017-11-21 19:06:15

+0

好奇(有點偏離主題) - 你如何獲取文件appender從真實設備中記錄的HTML文件的副本?我不認爲你可以?您必須使用DDMS從AndroidStudio模擬器中檢索它? – 2017-11-21 23:10:34

0

對我來說,這是由Nija在這個問題上的第一個評論解決。

我的文件標記現在看起來是這樣的:

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

怪異認爲雖然,logs.log文件在我的內部存儲出現在指定的路徑下(不帶/ SD卡/)。

我的手機在相關的情況下運行Android 6.0.1。

總結我的答案是嘗試上述文件路徑並檢查內部存儲以防其他答案不起作用。

更新

只是想在電腦上打開日誌文件,但無法找到它。我仍然可以通過手機本身的任何存儲訪問應用程序(例如文件指揮器)找到它。但是當看到與PC完全相同的文件夾時,它不在那裏。因此,當您的存儲訪問應用程序足夠好時,請查看它。