Logback-android: Log not getting writen to a file

我的梦境 提交于 2019-12-23 08:12:08

问题


Trying to redirect the log messages using logback-android, so that messages can be saved in a file. However, it is not getting saved into a file.

This is my logback.xml file configration, which is stored under src/main/assets in my 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> 

This is piece of code where i am initiating the logging.

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

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



    }

Issue: I continue to see the messages in the logcat, but i expect them to be stored in my android sd card memory.

Added the user permission in manifest for writting the logs in the sd card

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

Am i missing some thing in this configuration, as i don't see any errors or message in my logcat for any configuration errors also. Can some one help me here


回答1:


Did you try to add configuration to AndroidManifest.xml?

Example manifest (from this 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>



回答2:


For Android 6+ You have to define permissions manually in settings for your application. Otherwise logback will not be allowed to write to external storage even if you grant WRITE_EXTERNAL_STORAGE permission in manifest.xml.

I took solution from here.




回答3:


For me it was kind of solved by the first comment of Nija on the question.

My file tag now looks like this:

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

The weird think is though, that the logs.log file appeared on my internal storage under the given path (without /sdcard/).

My phone is running Android 6.0.1 in case thats relevant.

Concluding my answer is to try the above file path and check internal storage in case the other answers don't work.

Update:

Just wanted to open the log file on the computer, but couldn't find it. I can still find it with any storage access app (e.g. file commander) on the phone itself. But when looking at exactly the same folder with the PC it's not there. So check it out with a storage access app when that's good enough for you.



来源:https://stackoverflow.com/questions/28059512/logback-android-log-not-getting-writen-to-a-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!