|
| 1 | +# SLog |
| 2 | + |
| 3 | +``` |
| 4 | + Android log日志库 -功能齐全,扩展性强,性能高效。(只需一次初始化,就可以随心处理log) |
| 5 | +``` |
| 6 | + |
| 7 | +##### [](https://gitter.im/alibaba/ARouter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://www.apache.org/licenses/LICENSE-2.0) |
| 8 | + |
| 9 | +--- |
| 10 | + |
| 11 | +#### 最新版本 |
| 12 | + |
| 13 | +模块|slog-api |
| 14 | +---|--- |
| 15 | +最新版本|[](https://bintray.com/zhi1ong/maven/arouter-api/_latestVersion) |
| 16 | + |
| 17 | +#### Demo展示 |
| 18 | + |
| 19 | +##### [Demo apk下载](http://public.cdn.zhilong.me/app-debug.apk)、[Demo Gif](https://raw.githubusercontent.com/alibaba/ARouter/master/demo/arouter-demo.gif) |
| 20 | + |
| 21 | +#### 一、功能介绍 |
| 22 | +1. **支持多个通道打印日志,可自定义实现打印机** |
| 23 | +2. **支持同步、异步方式写日志到文件** |
| 24 | +3. **支持日志缓存自动清理** |
| 25 | +4. **多种多样的格式化工具** |
| 26 | +5. **支持多种文件,满足实际应用中多种类型日志需求(时间片、文件后缀)** |
| 27 | +6. **支持打印无限长的日志** |
| 28 | +7. **支持线程信息输出** |
| 29 | +8. **支持调用栈信息(可配置的调用栈深度)** |
| 30 | +8. **支持多种TAG类型配置组合** |
| 31 | + |
| 32 | +#### 二、典型应用 |
| 33 | +1. 调试时,在Android Studio Logcat中输出 |
| 34 | +2. 保存应用中部分重要日志到外部储存。 |
| 35 | + |
| 36 | +#### 三、基础功能 |
| 37 | +1. 添加依赖和配置 |
| 38 | +``` |
| 39 | +dependencies { |
| 40 | + compile 'com.weiqi:slog:x.x.x' |
| 41 | + ... |
| 42 | +} |
| 43 | +``` |
| 44 | + |
| 45 | +2. 初始化 |
| 46 | +``` Application |
| 47 | +@Override |
| 48 | + public void onCreate() { |
| 49 | + super.onCreate(); |
| 50 | + Context context = getApplicationContext(); |
| 51 | +
|
| 52 | + //init log |
| 53 | + Settings settings = new Settings.Builder() |
| 54 | + .context(context)//获取设备信息等写到日志文件头部 |
| 55 | + .mLogSegment(LogSegment.TWENTY_FOUR_HOURS)//保存日志文件时间切片 如果缓存日志量大可以使用小时间片 |
| 56 | + .zoneOffset(ZoneOffset.P0800)//保存日志时区偏移 |
| 57 | + .timeFormat(SLogConstants.DEFAULT_TIME_FORMAT)//保存日志时间格式 |
| 58 | + .isBorder(true)//是否 开启外框 |
| 59 | + .isThread(true)//是否 打印线程信息 |
| 60 | + .isStackTrace(true)//是否 打印堆栈跟踪信息 非必要可以关闭 提升性能 |
| 61 | + .build(); |
| 62 | +
|
| 63 | + /** |
| 64 | + * 创建一个控制台打印机 |
| 65 | + */ |
| 66 | + Printer consolePrinter = new DefaultConsolePrinter(); |
| 67 | + /** |
| 68 | + * 设置需要的堆栈跟踪信息深度为2层并开启数据自动JSON格式化 |
| 69 | + */ |
| 70 | + consolePrinter.setFormatter(new DefaultConsoleFormatter(3, true)); |
| 71 | +
|
| 72 | + /** |
| 73 | + * 创建一个SD卡文件打印机 设置日志存储地址 |
| 74 | + * 默认开启 一个文件上限为30的缓存清理工具 你也可以null关闭 或者自定义实现 |
| 75 | + */ |
| 76 | + Printer filePrinter = new DefaultFilePrinter(SDUtils.getLogPath(getApplicationContext())); |
| 77 | + filePrinter.setFormatter(new DefaultFileFormatter()); |
| 78 | + filePrinter.addLevelForFile(new ArrayList<LogLevel>() {//需要写入文件的日志类型 不设置默认全写入日志文件 |
| 79 | + { |
| 80 | + add(LogLevel.WTF); |
| 81 | + } |
| 82 | + }); |
| 83 | +
|
| 84 | + if (BuildConfig.DEBUG) { |
| 85 | + SLog.init(settings, consolePrinter, filePrinter); |
| 86 | + } else { |
| 87 | + SLog.init(settings, filePrinter);//非debug环境 关闭consolePrinter |
| 88 | + } |
| 89 | +
|
| 90 | + } |
| 91 | +``` |
| 92 | + |
| 93 | + |
| 94 | +4. 打印日志 |
| 95 | +``` java |
| 96 | +// 1. 应用内简单的应用 |
| 97 | +SLog.d(TAG, "测试"); |
| 98 | + |
| 99 | +// 2. 同步方式将 crash日志单独写入特定文件中 |
| 100 | +使用同步方式保证进程被杀之前保存好信息 |
| 101 | +正常场景推荐 异步方式 |
| 102 | +SLog.wtfParams(TAG, "catch a crash info", "carsh", true); |
| 103 | +``` |
| 104 | + |
| 105 | +5. 添加混淆规则(如果使用了Proguard) |
| 106 | +``` |
| 107 | +-keepattributes SourceFile, LineNumberTable |
| 108 | +-keep class com.weiqi.slog.** { *; } |
| 109 | +``` |
| 110 | + |
| 111 | +#### 四、进阶用法 |
| 112 | +1. 自定义文件打印机 |
| 113 | +``` java |
| 114 | +跟sdk中的 DefaultFilePrinter一样实现Printer接口 |
| 115 | +你可以同步或者异步去写日志 |
| 116 | +也可以自定义日志的包装格式 |
| 117 | + |
| 118 | +最后,将打印机放入SLog |
| 119 | +SLog.init(settings, filePrinter); |
| 120 | +``` |
| 121 | + |
| 122 | +2. 自定义格式化工具 |
| 123 | +``` java |
| 124 | +如果你觉得内置的格式化工具不能满足你 你可以自定义格式化工具 |
| 125 | +跟sdk中 DefaultFileFormatter一样实现MessageFormatter接口 |
| 126 | +组织包装你需要的日志格式 |
| 127 | + |
| 128 | +最后,将打印机放入对应的打印机 |
| 129 | +filePrinter.setFormatter(new DefaultFileFormatter()); |
| 130 | +``` |
| 131 | + |
| 132 | +3. 自定义日志缓存清理工具 |
| 133 | +``` java |
| 134 | +sdk中自带的LogCacheHelper是按时间顺序清理缓存文件的,如果觉得不适用,也可以自己实现。 |
| 135 | +最后放入对应打印机 |
| 136 | +DefaultFilePrinter(String logDir, CacheHelper cacheHelper) |
| 137 | +``` |
| 138 | + |
| 139 | +#### 五、功能&性能测试 |
| 140 | + |
| 141 | +参见demo中MainActivity各项测试 |
| 142 | + |
| 143 | + |
| 144 | +#### 六、其他 |
| 145 | + |
| 146 | +1. 沟通和交流 |
| 147 | + |
| 148 | + 我的简书: |
| 149 | + |
0 commit comments