# lib_logger **Repository Path**: xjdd/lib_logger ## Basic Information - **Project Name**: lib_logger - **Description**: logger日志,crashHandler全局捕获 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-06 - **Last Updated**: 2021-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### DLog * 当前实现为 [timber](https://github.com/JakeWharton/timber) * DLog 代理了 Logger (当前基于5.0.1,可使用其全部功能),主要在日志文件的保存上作了修改。 * 支持本地保存,支持自定义路径。 ###### 使用(基本与logger一致) ``` // 打印日志(可以链式使用.t()附上tag) DLog.t("tag").d("这是日志"); /* 打印列表 */ List list = new ArrayList<>(); list.add("Winter"); list.add("is"); list.add("coming"); DLog.d(list); /* 打印Map */ Map map = new HashMap<>(); map.put("1", "yi"); map.put("2", "er"); map.put("3", "san"); DLog.d(map); /* 打印对象, 内容为该对象的toString() */ DLog.d(new TestBean()); /* 若想使用原生Logger,需在初始化中配置 logConfig.enableLogger = true */ Logger.i("xxxxxxxxx"); ``` ###### 初始化配置 如下示例 ``` public void loggerInit(Context context) { DLog.Config config = DLog.init(context) .setLogSwitch(true)// 设置log总开关,包括输出到控制台和文件,默认开 .setConsoleSwitch(true)// 设置是否输出到控制台开关,默认开 .setGlobalTag(null)// 设置log全局标签,默认为空 // 当全局标签不为空时,我们输出的log全部为该tag, // 为空时,如果传入的tag为空那就显示类名,否则显示tag .setLogHeadSwitch(false)// 设置log头信息开关,默认为开 .setLog2FileSwitch(false)// 打印log时是否存到文件的开关,默认关 .setDir("")// 当自定义路径为空时,写入应用的/cache/log/目录中 .setFilePrefix("")// 当文件前缀为空时,默认为"alog",即写入文件为"alog-MM-dd.txt" .setBorderSwitch(false)// 输出日志是否带边框开关,默认开 .setSingleTagSwitch(true)// 一条日志仅输出一条,默认开,为美化 AS 3.1.0 的 Logcat .setConsoleFilter(DLog.V)// log的控制台过滤器,和logcat过滤器同理,默认Verbose .setFileFilter(DLog.V)// log文件过滤器,和logcat过滤器同理,默认Verbose .setStackDeep(10)// log 栈深度,默认为 1 .setStackOffset(0)// 设置栈偏移,比如二次封装的话就需要设置,默认为 0 .setSaveDays(7);// 设置日志可保留天数,默认为 -1 表示无限时长 // 新增 ArrayList 格式化器,默认已支持 Array, Throwable, Bundle, Intent 的格式化输出 // .addFormatter(new DLog.IFormatter() { // @Override // public String format(ArrayList list) { // return "ALog Formatter ArrayList { " + list.toString() + " }"; // } // }); DLog.e("日志初始化完成:${}" + config.toString()); } ``` ### CrashLog * 当前实现为 CrashHandler 全局崩crash 日志栈捕获 * CrashHandler `Thread.setDefaultUncaughtExceptionHandler(this)` 代替了系统处理,并实现`uncaughtException`捕获`Throwable` * 保存日志到本地文件,支持缓存时间删除,未对文件进行上传到服务器 Android/data/app/cache/crashLog/yyyy-MM-dd-HH:mm:ss.txt * 日志处理完成之后`mDefaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler()` 交给系统的异常捕获`mDefaultExceptionHandler.uncaughtException(t, e);` * 处理完毕之后结束进程 ###### 初始化配置 ``` CrashHandler.getInstance().init(context); ``` ### okhttp check * 通过okhttp 拦截器解析网络请求 * 展示在通知栏,release之后不会提示 ###### 初始化配置 ``` OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new ChuckInterceptor(context)) .build(); ``` ### 使用方法 根目录`build.gradle`中配置jitpack仓库地址 ``` allprojects { repositories { ... maven { url 'https://jitpack.io' } } } ``` 然后在需要的model下面`build.gradle`配置如下 ``` dependencies { implementation 'com.gitee.xjdd:lib_logger:1.0.1' } ```