我想将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>
答案 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());