读取通过slf4android记录的文件?

时间:2016-11-21 21:06:28

标签: android logging slf4j slf4android

我正在使用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);

2 个答案:

答案 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,上传到服务器或只是复制到另一个文件夹。