指定sdcard应用程序数据目录路径以返回android
我正在我的应用程序中使用日志记录。我需要将日志写入SD卡中应用程序数据目录中的文件。我使用了下面的文件appender config指定sdcard应用程序数据目录路径以返回android,android,logback,Android,Logback,我正在我的应用程序中使用日志记录。我需要将日志写入SD卡中应用程序数据目录中的文件。我使用了下面的文件appender config <appender name="file" class="ch.qos.logback.core.FileAppender"> <file>/sdcard/Android/data/com.my.app/files/app.log</file> <encoder> <patter
<appender name="file" class="ch.qos.logback.core.FileAppender">
<file>/sdcard/Android/data/com.my.app/files/app.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
使用以下格式的文件位置
/data/data/com.example/files/log/foo.log
上述路径格式在我的情况下不起作用,我前面提到的两种路径格式确实起作用
在logback.xml中指定应用程序数据目录路径的正确方法是什么?在不同的设备中,目录路径是否与我提到的前两种模式不同?我最终决定以编程方式设置文件路径。我在自定义应用程序的onCreate()
类中添加了以下代码
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
for (ch.qos.logback.classic.Logger logger : context.getLoggerList()) {
for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext(); ) {
Appender<ILoggingEvent> appender = index.next();
if (appender instanceof FileAppender) {
((FileAppender) appender).setFile(new File(getExternalFilesDir(null), "app.log").getAbsolutePath());
appender.start();
}
}
}
LoggerContext context=(LoggerContext)LoggerFactory.getILoggerFactory();
对于(ch.qos.logback.classic.Logger记录器:context.getLoggerList()){
for(Iterator index=logger.iteratorforappendes();index.hasNext();){
Appender Appender=index.next();
if(文件追加器的追加器实例){
((FileAppender)appender.setFile(新文件(getExternalFilesDir(null),“app.log”).getAbsolutePath());
appender.start();
}
}
}
使用有效的路径。忘掉数据。@RobertRowntree,我后来意识到/data/data
路径指向应用程序的应用程序数据目录,该目录位于SD卡的保护区内(而不是用户可见的外部文件目录)。无论如何,我的问题是SD卡路径模式是否对所有设备保持不变。我最终决定以编程方式设置日志文件路径,这样就不必担心硬编码SD卡文件路径模式。