import{_ as s,o,c as a,a as e}from"./app.7900f22c.js";const n={},p=e(`

LoggerFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F YukiHookAPI \u7684\u65E5\u5FD7\u5C01\u88C5\u7C7B\uFF0C\u53EF\u5B9E\u73B0\u540C\u65F6\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\u7684\u529F\u80FD\u3002

LoggerType - class

enum class LoggerType

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u9700\u8981\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\u3002

\u51B3\u5B9A\u4E8E\u6A21\u5757\u4E0E (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u7684\u6253\u5370\u65B9\u5F0F\u3002

LOGD - enum

LOGD

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EC5\u4F7F\u7528 android.util.Log\u3002

XPOSEDBRIDGE - enum

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

v1.1.5 \u4F5C\u5E9F

\u8BF7\u8F6C\u79FB\u5230 XPOSED_ENVIRONMENT

XPOSED_ENVIRONMENT - enum

XPOSED_ENVIRONMENT

\u53D8\u66F4\u8BB0\u5F55

v1.1.5 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EC5\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u3002

\u7279\u522B\u6CE8\u610F

\u53EA\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528\uFF0C\u6A21\u5757\u73AF\u5883\u5C06\u4E0D\u751F\u6548\u3002

SCOPE - enum

SCOPE

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5206\u533A\u4F7F\u7528\u3002

(Xposed) \u5BBF\u4E3B\u73AF\u5883\u4EC5\u4F7F\u7528 XPOSED_ENVIRONMENT\u3002

\u6A21\u5757\u73AF\u5883\u4EC5\u4F7F\u7528 LOGD\u3002

BOTH - enum

BOTH

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u540C\u65F6\u4F7F\u7528\u3002

(Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528 LOGD \u4E0E XPOSED_ENVIRONMENT\u3002

\u6A21\u5757\u73AF\u5883\u4EC5\u4F7F\u7528 LOGD\u3002

YukiLoggerData - class

data class YukiLoggerData internal constructor(
    var timestamp: Long,
    var time: String,
    var tag: String,
    var priority: String,
    var packageName: String,
    var userId: Int,
    var msg: String,
    var throwable: Throwable?
) : Serializable

\u53D8\u66F4\u8BB0\u5F55

v1.1.2 \u65B0\u589E

v1.1.4 \u4FEE\u6539

\u5B9E\u73B0 Serializable \u63A5\u53E3\u5E76\u6807\u8BC6\u4E3A data class

\u529F\u80FD\u63CF\u8FF0

\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E\u5B9E\u73B0\u7C7B\u3002

YukiHookLogger - object

object YukiHookLogger

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8C03\u8BD5\u65E5\u5FD7\u5B9E\u73B0\u7C7B\u3002

inMemoryData - field

val inMemoryData: ArrayList<YukiLoggerData>

\u53D8\u66F4\u8BB0\u5F55

v1.1.2 \u65B0\u589E

v1.1.4 \u4FEE\u6539

\u7C7B\u578B\u7531 HashSet \u4FEE\u6539\u4E3A ArrayList

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D\u5168\u90E8\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7\u6570\u636E\u3002

\u7279\u522B\u6CE8\u610F

\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\u3002

contents - field

val contents: String

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D\u65E5\u5FD7\u6587\u4EF6\u5185\u5BB9\u3002

\u5982\u679C\u5F53\u524D\u6CA1\u6709\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7\u4F1A\u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\u3002

\u7279\u522B\u6CE8\u610F

\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\u3002

contents - method

fun contents(data: ArrayList<YukiLoggerData>): String

\u53D8\u66F4\u8BB0\u5F55

v1.1.5 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u3001\u683C\u5F0F\u5316\u5F53\u524D\u65E5\u5FD7\u6587\u4EF6\u5185\u5BB9\u3002

\u5982\u679C\u5F53\u524D\u6CA1\u6709\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7 (data \u4E3A\u7A7A) \u4F1A\u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\u3002

\u7279\u522B\u6CE8\u610F

\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\u3002

clear - method

fun clear()

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u6E05\u9664\u5168\u90E8\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7\u3002

\u4F60\u4E5F\u53EF\u4EE5\u76F4\u63A5\u83B7\u53D6 inMemoryData \u6765\u6E05\u9664\u3002

\u7279\u522B\u6CE8\u610F

\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\u3002

saveToFile - method

fun saveToFile(fileName: String, data: ArrayList<YukiLoggerData>)

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

v1.1.5 \u4FEE\u6539

\u65B0\u589E data \u53C2\u6570

\u529F\u80FD\u63CF\u8FF0

\u4FDD\u5B58\u5F53\u524D\u65E5\u5FD7\u5230\u6587\u4EF6\u3002

\u82E5\u5F53\u524D\u672A\u5F00\u542F Configs.isRecord \u6216\u8BB0\u5F55\u4E3A\u7A7A\u5219\u4E0D\u4F1A\u8FDB\u884C\u4EFB\u4F55\u64CD\u4F5C\u3002

\u65E5\u5FD7\u6587\u4EF6\u4F1A\u8FFD\u52A0\u5230 fileName \u7684\u6587\u4EF6\u7ED3\u5C3E\uFF0C\u82E5\u6587\u4EF6\u4E0D\u5B58\u5728\u4F1A\u81EA\u52A8\u521B\u5EFA\u3002

\u7279\u522B\u6CE8\u610F

\u6587\u4EF6\u8BFB\u5199\u6743\u9650\u53D6\u51B3\u4E8E\u5F53\u524D\u5BBF\u4E3B\u3001\u6A21\u5757\u5DF2\u83B7\u53D6\u7684\u6743\u9650\u3002

Configs - object

object Configs

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u914D\u7F6E YukiHookLogger\u3002

TAG - field

const val TAG: Int

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u6807\u7B7E\u3002

PRIORITY - field

const val PRIORITY: Int

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4F18\u5148\u7EA7\u3002

PACKAGE_NAME - field

const val PACKAGE_NAME: Int

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D\u5BBF\u4E3B\u7684\u5305\u540D\u3002

USER_ID - field

const val USER_ID: Int

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D\u5BBF\u4E3B\u7684\u7528\u6237 ID (\u4E3B\u7528\u6237\u4E0D\u663E\u793A)\u3002

isEnable - field

var isEnable: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528\u8C03\u8BD5\u65E5\u5FD7\u7684\u8F93\u51FA\u529F\u80FD\u3002

\u5173\u95ED\u540E\u5C06\u4F1A\u505C\u7528 YukiHookAPI \u5BF9\u5168\u90E8\u65E5\u5FD7\u7684\u8F93\u51FA\u3002

\u4F46\u662F\u4E0D\u5F71\u54CD\u5F53\u4F60\u624B\u52A8\u8C03\u7528\u4E0B\u9762\u8FD9\u4E9B\u65B9\u6CD5\u8F93\u51FA\u65E5\u5FD7\u3002

loggerD\u3001loggerI\u3001loggerW\u3001loggerE\u3002

\u5F53 isEnable \u5173\u95ED\u540E YukiHookAPI.Configs.isDebug \u4E5F\u5C06\u540C\u65F6\u5173\u95ED\u3002

isRecord - field

var isRecord: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528\u8C03\u8BD5\u65E5\u5FD7\u7684\u8BB0\u5F55\u529F\u80FD\u3002

\u5F00\u542F\u540E\u5C06\u4F1A\u5728\u5185\u5B58\u4E2D\u8BB0\u5F55\u5168\u90E8\u53EF\u7528\u7684\u65E5\u5FD7\u548C\u5F02\u5E38\u5806\u6808\u3002

\u9700\u8981\u540C\u65F6\u542F\u7528 isEnable \u624D\u80FD\u6709\u6548\u3002

\u7279\u522B\u6CE8\u610F

\u8FC7\u91CF\u7684\u65E5\u5FD7\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5BBF\u4E3B\u8FD0\u884C\u7F13\u6162\u6216\u9020\u6210\u9891\u7E41 GC\u3002

\u5F00\u542F\u540E\u4F60\u53EF\u4EE5\u8C03\u7528 YukiHookLogger.saveToFile \u5B9E\u65F6\u4FDD\u5B58\u65E5\u5FD7\u5230\u6587\u4EF6\u6216\u4F7F\u7528 YukiHookLogger.contents \u83B7\u53D6\u5B9E\u65F6\u65E5\u5FD7\u6587\u4EF6\u3002

tag - field

var tag: String

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u8C03\u8BD5\u65E5\u5FD7\u7684\u5168\u5C40\u6807\u8BC6\u3002

\u9ED8\u8BA4\u6587\u6848\u4E3A YukiHookAPI\u3002

\u4F60\u53EF\u4EE5\u4FEE\u6539\u4E3A\u4F60\u81EA\u5DF1\u7684\u6587\u6848\u3002

elements - method

fun elements(vararg item: Int)

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u81EA\u5B9A\u4E49\u8C03\u8BD5\u65E5\u5FD7\u5BF9\u5916\u663E\u793A\u7684\u5143\u7D20\u3002

\u53EA\u5BF9\u65E5\u5FD7\u8BB0\u5F55\u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u7684\u65E5\u5FD7\u751F\u6548\u3002

\u65E5\u5FD7\u5143\u7D20\u7684\u6392\u5217\u5C06\u6309\u7167\u4F60\u5728 item \u4E2D\u8BBE\u7F6E\u7684\u987A\u5E8F\u8FDB\u884C\u663E\u793A\u3002

\u4F60\u8FD8\u53EF\u4EE5\u7559\u7A7A item \u4EE5\u4E0D\u663E\u793A\u9664\u65E5\u5FD7\u5185\u5BB9\u5916\u7684\u5168\u90E8\u5143\u7D20\u3002

\u53EF\u7528\u7684\u5143\u7D20\u6709\uFF1ATAG\u3001PRIORITY\u3001PACKAGE_NAME\u3001USER_ID\u3002

\u529F\u80FD\u793A\u4F8B

\u6253\u5370\u7684\u65E5\u5FD7\u6837\u5F0F\u5C06\u6309\u7167\u4F60\u8BBE\u7F6E\u7684\u6392\u5217\u987A\u5E8F\u548C\u5143\u7D20\u5185\u5BB9\u8FDB\u884C\u3002

\u793A\u4F8B\u5982\u4E0B

elements(TAG, PRIORITY, PACKAGE_NAME, USER_ID)

\u4EE5\u4E0A\u5185\u5BB9\u5B9A\u4E49\u7684\u65E5\u5FD7\u5C06\u663E\u793A\u4E3A\u5982\u4E0B\u6837\u5F0F\u3002

\u793A\u4F8B\u5982\u4E0B

[YukiHookAPI][D][com.demo.test][999]--> This is a log

\u5982\u679C\u6211\u4EEC\u8C03\u6574\u5143\u7D20\u987A\u5E8F\u4EE5\u53CA\u51CF\u5C11\u4E2A\u6570\uFF0C\u90A3\u4E48\u7ED3\u679C\u53C8\u4F1A\u4E0D\u4E00\u6837\u3002

\u793A\u4F8B\u5982\u4E0B

elements(PACKAGE_NAME, USER_ID, PRIORITY)

\u4EE5\u4E0A\u5185\u5BB9\u5B9A\u4E49\u7684\u65E5\u5FD7\u5C06\u663E\u793A\u4E3A\u5982\u4E0B\u6837\u5F0F\u3002

\u793A\u4F8B\u5982\u4E0B

[com.demo.test][999][D]--> This is a log

loggerD - method

fun loggerD(tag: String, msg: String, type: LoggerType)

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

\u65B0\u589E type \u53C2\u6570

\u529F\u80FD\u63CF\u8FF0

\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522B D\u3002

tag \u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002

loggerI - method

fun loggerI(tag: String, msg: String, type: LoggerType)

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

\u65B0\u589E type \u53C2\u6570

\u529F\u80FD\u63CF\u8FF0

\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522B I\u3002

tag \u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002

loggerW - method

fun loggerW(tag: String, msg: String, type: LoggerType)

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

\u65B0\u589E type \u53C2\u6570

\u529F\u80FD\u63CF\u8FF0

\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522B W\u3002

tag \u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002

loggerE - method

fun loggerE(tag: String, msg: String, e: Throwable?, type: LoggerType)

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

\u65B0\u589E type \u53C2\u6570

\u529F\u80FD\u63CF\u8FF0

\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522B E\uFF0C\u53EF\u643A\u5E26 e \u5F02\u5E38\u4FE1\u606F\uFF0C\u5C06\u6253\u5370\u5F02\u5E38\u5806\u6808\u3002

tag \u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002

`,221),l=[p];function c(t,r){return o(),a("div",null,l)}const i=s(n,[["render",c],["__file","LoggerFactory.html.vue"]]);export{i as default};