XLogUtil封装

104 阅读1分钟
package com.huawo.qjs.utils

import android.util.Log
import java.util.Locale
import java.text.SimpleDateFormat
import java.util.*

enum class LogLevel {
    DEBUG, INFO, WARN, ERROR, SUCCESS, FAILURE
}

class XLogUtil(private val tag: String) {
    companion object {
        var isEnabled: Boolean = true // 日志开关
        var logLevel: LogLevel = LogLevel.DEBUG // 最低日志级别
        var logTAG: String = "XLogUtil" // 是该日志打出来的
    }

    private fun log(level: LogLevel, message: String, successOrFailure: Boolean? = null) {
        if (!isEnabled || level.ordinal < logLevel.ordinal) return

        val timestamp = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(Date())
        val statusSymbol = if (successOrFailure == true) "✅" else if (successOrFailure == false) "❌" else ""
        val logMessage = "[$timestamp] [$level] [$tag] $statusSymbol $message"

//        println(logMessage) // 可以根据需要替换为 Android Log
        when (level) {
            LogLevel.DEBUG -> Log.d(logTAG, logMessage)
            LogLevel.INFO -> Log.i(logTAG, logMessage)
            LogLevel.WARN -> Log.w(logTAG, logMessage)
            LogLevel.ERROR -> Log.e(logTAG, logMessage)
            else -> Log.e(logTAG, logMessage)
        }
    }

    // 根据 LogLevel 调用 log 方法
    fun d(message: String) {
        log(LogLevel.DEBUG, message)
    }

    fun i(message: String) {
        log(LogLevel.INFO, message)
    }

    fun w(message: String) {
        log(LogLevel.WARN, message)
    }

    fun e(message: String) {
        log(LogLevel.ERROR, message)
    }

    fun s(message: String) {
        log(LogLevel.SUCCESS, message, true)
    }

    fun f(message: String) {
        log(LogLevel.FAILURE, message, false)
    }
}