×

封装 Android 工具 日志

Android日志工具的封装

jnlyseo998998 jnlyseo998998 发表于2023-04-05 11:29:02 浏览14 评论0

抢沙发发表评论

原本我是一个不怎么喜欢写日志,也不怎么喜欢看日志的人。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")