mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 02:35:40 +08:00
Added LoggerType function in LoggerFactory
This commit is contained in:
@@ -31,8 +31,78 @@ package com.highcapable.yukihookapi.hook.log
|
||||
|
||||
import android.util.Log
|
||||
import com.highcapable.yukihookapi.YukiHookAPI
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge
|
||||
import de.robv.android.xposed.XposedBridge
|
||||
|
||||
/**
|
||||
* 需要打印的日志类型
|
||||
*
|
||||
* 决定于模块与 (Xposed) 宿主环境使用的打印方式
|
||||
*/
|
||||
enum class LoggerType {
|
||||
/** 仅使用 [Log] */
|
||||
LOGD,
|
||||
|
||||
/**
|
||||
* 仅使用 [XposedBridge.log]
|
||||
*
|
||||
* - ❗只能在 (Xposed) 宿主环境中使用 - 模块环境将不生效
|
||||
*/
|
||||
XPOSEDBRIDGE,
|
||||
|
||||
/**
|
||||
* 分区使用
|
||||
*
|
||||
* (Xposed) 宿主环境仅使用 [XPOSEDBRIDGE]
|
||||
*
|
||||
* 模块环境仅使用 [LOGD]
|
||||
*/
|
||||
SCOPE,
|
||||
|
||||
/**
|
||||
* 同时使用
|
||||
*
|
||||
* (Xposed) 宿主环境使用 [LOGD] 与 [XPOSEDBRIDGE]
|
||||
*
|
||||
* 模块环境仅使用 [LOGD]
|
||||
*/
|
||||
BOTH
|
||||
}
|
||||
|
||||
/**
|
||||
* 向控制台和 [XposedBridge] 打印日志 - 最终实现方法
|
||||
* @param format 日志打印的格式
|
||||
* @param type 日志打印的类型
|
||||
* @param tag 日志打印的标签
|
||||
* @param msg 日志打印的内容
|
||||
* @param e 异常堆栈信息
|
||||
*/
|
||||
private fun baseLogger(format: String, type: LoggerType, tag: String, msg: String, e: Throwable? = null) {
|
||||
/** 打印到 [Log] */
|
||||
fun loggerInLogd() = when (format) {
|
||||
"D" -> Log.d(tag, msg)
|
||||
"I" -> Log.i(tag, msg)
|
||||
"W" -> Log.w(tag, msg)
|
||||
"E" -> Log.e(tag, msg, e)
|
||||
else -> Log.wtf(tag, msg, e)
|
||||
}
|
||||
|
||||
/** 打印到 [XposedBridge.log] */
|
||||
fun loggerInXposed() = runCatching {
|
||||
XposedBridge.log("[$tag][$format]--> $msg")
|
||||
e?.also { XposedBridge.log(it) }
|
||||
}
|
||||
when (type) {
|
||||
LoggerType.LOGD -> loggerInLogd()
|
||||
LoggerType.XPOSEDBRIDGE -> loggerInXposed()
|
||||
LoggerType.SCOPE -> if (YukiHookBridge.hasXposedBridge) loggerInXposed() else loggerInLogd()
|
||||
LoggerType.BOTH -> {
|
||||
loggerInLogd()
|
||||
if (YukiHookBridge.hasXposedBridge) loggerInXposed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* [YukiHookAPI] 向控制台和 [XposedBridge] 打印日志 - D
|
||||
* @param msg 日志打印的内容
|
||||
@@ -76,11 +146,10 @@ internal fun yLoggerE(msg: String, e: Throwable? = null, isDisableLog: Boolean =
|
||||
* [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg]
|
||||
* @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.Configs.debugTag]
|
||||
* @param msg 日志打印的内容
|
||||
* @param type 日志打印的类型 - 默认为 [LoggerType.BOTH]
|
||||
*/
|
||||
fun loggerD(tag: String = YukiHookAPI.Configs.debugTag, msg: String) = runCatching {
|
||||
Log.d(tag, msg)
|
||||
XposedBridge.log("[$tag][D]--> $msg")
|
||||
}
|
||||
fun loggerD(tag: String = YukiHookAPI.Configs.debugTag, msg: String, type: LoggerType = LoggerType.BOTH) =
|
||||
baseLogger(format = "D", type, tag, msg)
|
||||
|
||||
/**
|
||||
* 向控制台和 [XposedBridge] 打印日志 - I
|
||||
@@ -88,11 +157,10 @@ fun loggerD(tag: String = YukiHookAPI.Configs.debugTag, msg: String) = runCatchi
|
||||
* [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg]
|
||||
* @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.Configs.debugTag]
|
||||
* @param msg 日志打印的内容
|
||||
* @param type 日志打印的类型 - 默认为 [LoggerType.BOTH]
|
||||
*/
|
||||
fun loggerI(tag: String = YukiHookAPI.Configs.debugTag, msg: String) = runCatching {
|
||||
Log.i(tag, msg)
|
||||
XposedBridge.log("[$tag][I]--> $msg")
|
||||
}
|
||||
fun loggerI(tag: String = YukiHookAPI.Configs.debugTag, msg: String, type: LoggerType = LoggerType.BOTH) =
|
||||
baseLogger(format = "I", type, tag, msg)
|
||||
|
||||
/**
|
||||
* 向控制台和 [XposedBridge] 打印日志 - W
|
||||
@@ -100,11 +168,10 @@ fun loggerI(tag: String = YukiHookAPI.Configs.debugTag, msg: String) = runCatchi
|
||||
* [XposedBridge] 中的日志打印风格为 [[tag]]「类型」--> [msg]
|
||||
* @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.Configs.debugTag]
|
||||
* @param msg 日志打印的内容
|
||||
* @param type 日志打印的类型 - 默认为 [LoggerType.BOTH]
|
||||
*/
|
||||
fun loggerW(tag: String = YukiHookAPI.Configs.debugTag, msg: String) = runCatching {
|
||||
Log.w(tag, msg)
|
||||
XposedBridge.log("[$tag][W]--> $msg")
|
||||
}
|
||||
fun loggerW(tag: String = YukiHookAPI.Configs.debugTag, msg: String, type: LoggerType = LoggerType.BOTH) =
|
||||
baseLogger(format = "W", type, tag, msg)
|
||||
|
||||
/**
|
||||
* 向控制台和 [XposedBridge] 打印日志 - E
|
||||
@@ -113,9 +180,7 @@ fun loggerW(tag: String = YukiHookAPI.Configs.debugTag, msg: String) = runCatchi
|
||||
* @param tag 日志打印的标签 - 建议和自己的模块名称设置成一样的 - 默认为 [YukiHookAPI.Configs.debugTag]
|
||||
* @param msg 日志打印的内容
|
||||
* @param e 可填入异常堆栈信息 - 将自动完整打印到控制台
|
||||
* @param type 日志打印的类型 - 默认为 [LoggerType.BOTH]
|
||||
*/
|
||||
fun loggerE(tag: String = YukiHookAPI.Configs.debugTag, msg: String, e: Throwable? = null) = runCatching {
|
||||
Log.e(tag, msg, e)
|
||||
XposedBridge.log("[$tag][E]--> $msg")
|
||||
e?.also { XposedBridge.log(it) }
|
||||
}
|
||||
fun loggerE(tag: String = YukiHookAPI.Configs.debugTag, msg: String, e: Throwable? = null, type: LoggerType = LoggerType.BOTH) =
|
||||
baseLogger(format = "E", type, tag, msg, e)
|
Reference in New Issue
Block a user