Android 自动存储Log、在线Log追踪

软件背景

    当线上产品人数达到一定级别时,软件的维护,BUG的解决就变得至关重要。 但测试阶段发现的BUG毕竟有限,一旦上线后只能靠一些第三放的Crash追踪平台解决,而对于非Crash又无法复现的BUG只能放任不管么?

    对于这种需求我就专门弄了XLog这个工具,将开发者需要的重要数据保存到本地,并能自动管理、控制大小、过期删除、自定义Crash后的操作(比如自动上传LOG文件到服务器)

示例

    需要声明服务:

<service android:name="com.sum.xlog.core.LogService" />

    使用配置

XLogConfiguration.Builder builder = new XLogConfiguration.Builder(MyApplication.this)
                .setConsoleLogLevel(LogLevel.D) //Logger输出最低级别
                .setFileLogLevel(LogLevel.D) //保存至文件最低级别
                .setCrashHandlerOpen(true) //开启异常捕获
                .setOriginalHandler(Thread.getDefaultUncaughtExceptionHandler()) //第三方统计
                .setOnUpdateCrashInfoListener(null) //Crash自动上传处理
                .setFileLogRetentionPeriod(7); //过期删除
        XLog.init(builder.build());

    

    基本方法

XLog.d("=== XXX ===");//省略写法
XLog.d(TAG, "=== xxx ===");//这里只是用Debug Level示例
XLog.d(TAG, "=== %s,%s ===", "XXX", "XXX"); //多个参数是推荐使用,无需用户拼接字符

    所有的LOG信息会先缓存到一个缓冲List中,当LOG信息大于20条时才会调用保存方法,这里是为了保证程序的流畅性。

    日志会自动保存到SD下的packageName_xlog文件夹下(当然这个路径开发者可以使用XLogConfiguration自己配置),想要快速获取当前LOG日志文件可以使用FileUtil.getTodayLogFilePath()

    

 Intent data = new Intent(Intent.ACTION_SEND); //这里用一个发送邮件方法作为一个示例,如果有服务器接口支持的话,可以直接传到服务器中
data.putExtra(Intent.EXTRA_EMAIL,new String[] {"test@test.com"});
data.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name));
data.putExtra(Intent.EXTRA_TEXT, "这是我的LOG日志");
data.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + FileUtil.getTodayLogFilePath()));
data.setType("message/rfc882");
startActivity(Intent.createChooser(data, getString(R.string.app_name)));

    

    附上Github连接:https://github.com/Qiu800820/XLog

    

    原文作者:移动开发
    原文地址: https://my.oschina.net/qiu800820/blog/632106
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞