如何在Android上指定logback的文件位置

时间:2015-03-11 16:10:42

标签: android logback

我想将logback输出写入日志文件,然后由用户将其发回给我。我的logback.xml如下。我的问题是我的日志记录只有在我指定的位置为" / storage / emulated / 0" ...(特定于设备)时才有效。如果我只是指定" /data/data/mypackage/files/log/debug.log"没有什么可写的。

以与所有Android 4.x设备兼容的方式为文件指定路径的最佳方法是什么?

<configuration debug="true">
    <!-- Create a file appender for a log in the application's data directory -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/storage/emulated/0/data/data/mypackage/files/log/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>debug.%i.log.zip</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>3</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <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>

1 个答案:

答案 0 :(得分:0)

您可以在代码中指定文件路径,而不是在logback.xml中。使用getFilesDir()获取保存内部文件的文件系统目录的绝对路径。

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
RollingFileAppender rfAppender = new RollingFileAppender();
rfAppender.setContext(loggerContext);

final File folder = getFilesDir();
final File logFile = new File(folder, "testFile.log");
rfAppender.setFile(logFile.getPath());