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"
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)
}
}
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)
}
}