原本我是一个不怎么喜欢写日志,也不怎么喜欢看日志的人。App中我只看网络请求的日志,网络请求的日志一般网络请求的框架中都会有日志打印。崩溃的日志也不需要自己去写。最近的项目中,要用手机连接U盘。手机USB接口被U盘占用了,看不到日志,很烦,崩溃了不知道问题出在哪里。看不到日志怎么办呢?首先我想到的是adb命令,使用网络连接手机,查看日志。这个方法理论上应该是可以的。然而总是连接不到手机。
于是我只能选择自己写日志文件了。
class HyLog private constructor(block: HyLog.() -> Unit) { /** * 是否开启日志 */ var showLog: Boolean = false /** * 日志标签 */ var tag = "hyjiao" /** * 是否保存到文件 */ var saveFile = false /** * 日志文件保存的位置 */ var logPath = "" init { block() } companion object { private lateinit var hyLog: HyLog fun initLog(block: HyLog.() -> Unit) { hyLog = HyLog(block) } fun v(log: String, tag: String = hyLog.tag) { if (hyLog.showLog) { if (hyLog.saveFile) { writeLogFile(log, "v", tag) } Log.i(tag, log) } } fun i(log: String, tag: String = hyLog.tag) { if (hyLog.showLog) { if (hyLog.saveFile) { writeLogFile(log, "i", tag) } Log.i(tag, log) } } fun d(log: String, tag: String = hyLog.tag) { if (hyLog.showLog) { if (hyLog.saveFile) { writeLogFile(log, "d", tag) } Log.i(tag, log) } } fun w(log: String, tag: String = hyLog.tag) { if (hyLog.showLog) { if (hyLog.saveFile) { writeLogFile(log, "w", tag) } Log.i(tag, log) } } fun e(log: String, tag: String = hyLog.tag) { if (hyLog.showLog) { if (hyLog.saveFile) { writeLogFile(log, "e", tag) } Log.i(tag, log) } } /** * 将日志写到文件中 */ private fun writeLogFile(log: String, type: String, tag: String) { val dateTime = HyUtil.formatDataTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss.SSS") val myLog = "$dateTime/$type/$tag:$log " val file = File(hyLog.logPath) if (!file.exists()) { file.createNewFile() } file.appendText(myLog, Charsets.UTF_8) } }}
日志工具的使用:
首先在Application的onCreate()中进行初始化设置
//设置是否日志工具HyLog.initLog { showLog = BuildConfig.DEBUG saveFile = BuildConfig.DEBUG logPath = externalCacheDir!!.absolutePath + File.pathSeparatorChar + "mylog.log"}
然后就可以在需要打印日志的地方添加日志了
HyLog.i("MyApp:onCreate()") HyLog.i(log = "MainActivity:onCreate()", tag = "MainActivity")
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.