我正在使用slf4android(https://github.com/bright/slf4android)编写日志,但是如何阅读它们并不明显(理想情况下我只想将它们下载到我的计算机上)。其他应用无法访问该应用的内部存储空间。我可以配置slf4android来登录共享目录吗?我试过了,但我得到了通知:
FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this);
File lol = this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
fileHandler.setFullFilePathPattern(fileHandler.toString() + "/my_log.%g.%u.log");
LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler);
答案 0 :(得分:1)
官方文档说你可以这样做:
FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this);
fileHandler.setFullFilePathPattern(SOMEPATH);
LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler);
并且日志文件将位于SOMEPATH中。我建议您使用常规环境目录而不是任意字符串,如
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getPath()+File.pathSeparator+"appLogs"
现在,如果您想将一些现有日志复制到其他目的地,您只需复制这些文件即可。
if(BuildConfig.DEBUG) {
File logs = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getPath(), "logs");
FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this);
LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler);
File currentLogs = fileHandler.getCurrentFileName();
if (currentLogs.exists()) {
FileChannel src = new FileInputStream(currentLogs).getChannel();
FileChannel dst = new FileOutputStream(logs).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
最后,请记住,如果您没有获得正确的存储权限,任何内容都无效!
希望它有所帮助。快乐的编码!
答案 1 :(得分:0)
在代码示例中,您提供的实际上并未使用" File lol"你已经定义了。 因此,它可能会失败,因为您尝试在第一个日志之上创建另一个日志(例如,在" /sdcard/your.package/my_log.%g.%u.log/my_log.%g.%u.log& #34);
尝试:
File lol = this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
fileHandler.setFullFilePathPattern(lol.getAbsolutePath() + "/my_log.%g.%u.log");
但是你也可以添加一个菜单选项点击它可以找到日志,可以压缩它们(与db或其他)和send by email,上传到服务器或只是复制到另一个文件夹。