ms-vite-plugin 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/build.js +6 -0
  2. package/dist/cli.js +98 -8
  3. package/dist/mcp/device-config.d.ts +55 -0
  4. package/dist/mcp/device-config.js +183 -0
  5. package/dist/mcp/docs-service.d.ts +65 -0
  6. package/dist/mcp/docs-service.js +168 -0
  7. package/dist/mcp/project.d.ts +16 -0
  8. package/dist/mcp/project.js +74 -0
  9. package/dist/mcp/tools.d.ts +18 -0
  10. package/dist/mcp/tools.js +825 -0
  11. package/dist/mcp/types.d.ts +32 -0
  12. package/dist/mcp/types.js +11 -0
  13. package/dist/mcp-server.d.ts +2 -0
  14. package/dist/mcp-server.js +86 -0
  15. package/dist/project.d.ts +89 -0
  16. package/dist/project.js +306 -0
  17. package/dist/version.d.ts +12 -0
  18. package/dist/version.js +63 -0
  19. package/docs/api/action.md +922 -0
  20. package/docs/api/appleocr.md +229 -0
  21. package/docs/api/config.md +122 -0
  22. package/docs/api/cryptoUtils.md +232 -0
  23. package/docs/api/device.md +374 -0
  24. package/docs/api/file.md +516 -0
  25. package/docs/api/global.md +617 -0
  26. package/docs/api/hid.md +1032 -0
  27. package/docs/api/hotUpdate.md +166 -0
  28. package/docs/api/http.md +548 -0
  29. package/docs/api/image.md +907 -0
  30. package/docs/api/ime.md +290 -0
  31. package/docs/api/logger.md +324 -0
  32. package/docs/api/media.md +248 -0
  33. package/docs/api/mysql.md +441 -0
  34. package/docs/api/netCard.md +200 -0
  35. package/docs/api/node.md +353 -0
  36. package/docs/api/paddleocr.md +246 -0
  37. package/docs/api/pip.md +242 -0
  38. package/docs/api/system.md +572 -0
  39. package/docs/api/thread.md +269 -0
  40. package/docs/api/tomatoocr.md +425 -0
  41. package/docs/api/tts.md +334 -0
  42. package/docs/api/ui.md +947 -0
  43. package/docs/api/utils.md +265 -0
  44. package/docs/api/yolo.md +310 -0
  45. package/docs/apicn/action.md +919 -0
  46. package/docs/apicn/appleocr.md +233 -0
  47. package/docs/apicn/config.md +120 -0
  48. package/docs/apicn/device.md +385 -0
  49. package/docs/apicn/file.md +511 -0
  50. package/docs/apicn/global.md +613 -0
  51. package/docs/apicn/hid.md +1033 -0
  52. package/docs/apicn/hotUpdate.md +170 -0
  53. package/docs/apicn/http.md +672 -0
  54. package/docs/apicn/image.md +924 -0
  55. package/docs/apicn/ime.md +290 -0
  56. package/docs/apicn/logger.md +332 -0
  57. package/docs/apicn/media.md +252 -0
  58. package/docs/apicn/mysql.md +445 -0
  59. package/docs/apicn/netCard.md +200 -0
  60. package/docs/apicn/node.md +362 -0
  61. package/docs/apicn/paddleocr.md +255 -0
  62. package/docs/apicn/pip.md +242 -0
  63. package/docs/apicn/system.md +575 -0
  64. package/docs/apicn/thread.md +269 -0
  65. package/docs/apicn/tts.md +338 -0
  66. package/docs/apicn/ui.md +933 -0
  67. package/docs/apicn/utils.md +265 -0
  68. package/docs/apicn/yolo.md +314 -0
  69. package/docs/apipython/action.md +901 -0
  70. package/docs/apipython/appleocr.md +226 -0
  71. package/docs/apipython/config.md +126 -0
  72. package/docs/apipython/cryptoUtils.md +246 -0
  73. package/docs/apipython/device.md +365 -0
  74. package/docs/apipython/file.md +476 -0
  75. package/docs/apipython/g.md +154 -0
  76. package/docs/apipython/hid.md +1059 -0
  77. package/docs/apipython/hotUpdate.md +154 -0
  78. package/docs/apipython/image.md +938 -0
  79. package/docs/apipython/ime.md +306 -0
  80. package/docs/apipython/logger.md +330 -0
  81. package/docs/apipython/media.md +221 -0
  82. package/docs/apipython/mysql.md +432 -0
  83. package/docs/apipython/netCard.md +219 -0
  84. package/docs/apipython/node.md +331 -0
  85. package/docs/apipython/overview.md +66 -0
  86. package/docs/apipython/paddleocr.md +211 -0
  87. package/docs/apipython/pip.md +231 -0
  88. package/docs/apipython/system.md +458 -0
  89. package/docs/apipython/tomatoocr.md +444 -0
  90. package/docs/apipython/tts.md +331 -0
  91. package/docs/apipython/ui.md +949 -0
  92. package/docs/apipython/utils.md +284 -0
  93. package/docs/apipython/yolo.md +281 -0
  94. package/package.json +8 -4
@@ -0,0 +1,306 @@
1
+ # 输入法模块 (IME)
2
+
3
+ 输入法模块提供了文本输入、剪贴板操作、键盘控制等功能,支持模拟用户的文本输入行为。
4
+
5
+ ## 前提条件
6
+
7
+ - 在系统设置中添加 **快点 JS API 键盘**
8
+ - 授予完全访问权限,并切换到 **快点 JS API 键盘**
9
+ - 如果添加了键盘,切换时找不到,请重启机器再试
10
+ - 注意键盘的方法,只有键盘弹出后才能调用
11
+
12
+ ## 输入法状态检查
13
+
14
+ ### isOk - 检查输入法键盘是否已弹出
15
+
16
+ ```python
17
+ def isOk() -> bool
18
+ ```
19
+
20
+ **返回值:**
21
+
22
+ | 类型 | 描述 |
23
+ | ------ | -------------------- |
24
+ | `bool` | 输入法键盘是否已弹出 |
25
+
26
+ **示例:**
27
+
28
+ ```python
29
+ from kuaijs import ime
30
+
31
+ # 检查输入法状态,只有键盘弹出后面的方法才能调用
32
+ if ime.isOk():
33
+ print("输入法键盘已弹出")
34
+ else:
35
+ print("输入法键盘未弹出,请检查设置")
36
+ # 可能需要重新初始化或检查权限
37
+ ```
38
+
39
+ ### autoSwitchApiKeyboard - 自动切换到 API 键盘
40
+
41
+ ```python
42
+ def autoSwitchApiKeyboard() -> bool
43
+ ```
44
+
45
+ **返回值:**
46
+
47
+ | 类型 | 描述 |
48
+ | ------ | ------------------------------------------ |
49
+ | `bool` | 是否成功切换并连接到 API 键盘,成功为 True |
50
+
51
+ - 该方法仅在系统设置中添加了快点JS API键盘 并且已授权完全访问权限时有效。
52
+ - Agent模式下,全面屏机型支持任意输入法切换快点JS API键盘,包括系统键盘和第三方键盘。
53
+ - Agent模式下,非全面屏机型仅支持系统键盘切换到快点JS API键盘,不支持第三方键盘切换。
54
+ - HID模式下,所有机型都能从任意输入法切换到快点JS API键盘,包括系统键盘和第三方键盘。
55
+
56
+ **示例:**
57
+
58
+ ```python
59
+ from kuaijs import ime
60
+
61
+ # 自动切换到 API 键盘(如未弹出会尝试切换)
62
+ if ime.autoSwitchApiKeyboard():
63
+ print("已切换到 API 键盘")
64
+ else:
65
+ print("切换失败,请检查键盘设置和完全访问权限")
66
+ ```
67
+
68
+ ## 文本获取和清除
69
+
70
+ ### getText - 获取当前输入框的文本内容
71
+
72
+ ```python
73
+ def getText() -> str
74
+ ```
75
+
76
+ **返回值:**
77
+
78
+ | 类型 | 描述 |
79
+ | ----- | -------------------- |
80
+ | `str` | 当前输入框的文本内容 |
81
+
82
+ **示例:**
83
+
84
+ ```python
85
+ from kuaijs import ime
86
+
87
+ # 获取当前输入框文本
88
+ current_text = ime.getText()
89
+ print(f"当前文本: {current_text}")
90
+ ```
91
+
92
+ ### clearText - 清空当前输入框的所有文本
93
+
94
+ ```python
95
+ def clearText() -> bool
96
+ ```
97
+
98
+ **返回值:**
99
+
100
+ | 类型 | 描述 |
101
+ | ------ | ---------------- |
102
+ | `bool` | 清除操作是否成功 |
103
+
104
+ **示例:**
105
+
106
+ ```python
107
+ from kuaijs import ime
108
+
109
+ # 清空输入框
110
+ if ime.clearText():
111
+ print("文本清除成功")
112
+ else:
113
+ print("文本清除失败")
114
+ ```
115
+
116
+ ## 文本输入
117
+
118
+ ### input - 模拟输入文本到当前焦点的输入框
119
+
120
+ ```python
121
+ def input(text: str) -> str
122
+ ```
123
+
124
+ **参数说明:**
125
+
126
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
127
+ | ------ | ---- | -------- | ------ | ---------------- |
128
+ | `text` | str | 是 | - | 要输入的文本内容 |
129
+
130
+ **返回值:**
131
+
132
+ | 类型 | 描述 |
133
+ | ----- | -------------------------------- |
134
+ | `str` | 输入后的文本内容,失败为空字符串 |
135
+
136
+ **示例:**
137
+
138
+ ```python
139
+ from kuaijs import ime
140
+
141
+ # 基础文本输入
142
+ text_after = ime.input("Hello World")
143
+ print(f"输入后文本: {text_after}")
144
+
145
+ # 输入中文
146
+ zh_text_after = ime.input("你好,世界!")
147
+ print(f"输入后文本: {zh_text_after}")
148
+ ```
149
+
150
+ ### paste - 模拟粘贴操作,将剪贴板内容粘贴到当前输入框
151
+
152
+ ```python
153
+ def paste(text: str | None = None) -> str
154
+ ```
155
+
156
+ **参数说明:**
157
+
158
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
159
+ | ------ | ---- | -------- | ------ | ------------------------------------------------ |
160
+ | `text` | str | 否 | - | 要粘贴的内容,可选参数,如果不传则使用剪贴板内容 |
161
+
162
+ **返回值:**
163
+
164
+ | 类型 | 描述 |
165
+ | ----- | -------------------------------- |
166
+ | `str` | 粘贴后的文本内容,失败为空字符串 |
167
+
168
+ **示例:**
169
+
170
+ ```python
171
+ from kuaijs import ime
172
+
173
+ # 基础粘贴操作(使用剪贴板内容)
174
+ pasted = ime.paste()
175
+ print(f"粘贴后文本: {pasted}")
176
+
177
+ # 粘贴指定内容
178
+ pasted_specified = ime.paste("要粘贴的文本")
179
+ print(f"粘贴指定内容后文本: {pasted_specified}")
180
+ ```
181
+
182
+ ## 键盘操作
183
+
184
+ ### pressDel - 模拟按下删除键(退格键)
185
+
186
+ ```python
187
+ def pressDel() -> str
188
+ ```
189
+
190
+ **返回值:**
191
+
192
+ | 类型 | 描述 |
193
+ | ----- | -------------------------------------- |
194
+ | `str` | 删除后剩余文本内容,为空表示无更多内容 |
195
+
196
+ **示例:**
197
+
198
+ ```python
199
+ from kuaijs import ime
200
+
201
+ # 删除一个字符
202
+ remaining = ime.pressDel()
203
+ print(f"删除后剩余文本: {remaining}")
204
+ ```
205
+
206
+ ### pressEnter - 模拟按下回车键
207
+
208
+ ```python
209
+ def pressEnter() -> bool
210
+ ```
211
+
212
+ **返回值:**
213
+
214
+ | 类型 | 描述 |
215
+ | ------ | ---------------- |
216
+ | `bool` | 回车操作是否成功 |
217
+
218
+ **示例:**
219
+
220
+ ```python
221
+ from kuaijs import ime
222
+
223
+ # 按下回车键
224
+ if ime.pressEnter():
225
+ print("回车键按下成功")
226
+ else:
227
+ print("回车键按下失败")
228
+ ```
229
+
230
+ ### dismiss - 隐藏键盘
231
+
232
+ ```python
233
+ def dismiss() -> bool
234
+ ```
235
+
236
+ **返回值:**
237
+
238
+ | 类型 | 描述 |
239
+ | ------ | ---------------- |
240
+ | `bool` | 隐藏操作是否成功 |
241
+
242
+ **示例:**
243
+
244
+ ```python
245
+ from kuaijs import ime
246
+
247
+ # 隐藏键盘
248
+ if ime.dismiss():
249
+ print("键盘隐藏成功")
250
+ else:
251
+ print("键盘隐藏失败")
252
+ ```
253
+
254
+ ## 剪贴板操作
255
+
256
+ ### getClipboard - 获取剪贴板内容
257
+
258
+ ```python
259
+ def getClipboard() -> str
260
+ ```
261
+
262
+ **返回值:**
263
+
264
+ | 类型 | 描述 |
265
+ | ----- | ------------------ |
266
+ | `str` | 剪贴板中的文本内容 |
267
+
268
+ **示例:**
269
+
270
+ ```python
271
+ from kuaijs import ime
272
+
273
+ # 获取剪贴板内容
274
+ clipboard_text = ime.getClipboard()
275
+ print(f"剪贴板内容: {clipboard_text}")
276
+ ```
277
+
278
+ ### setClipboard - 设置剪贴板内容
279
+
280
+ ```python
281
+ def setClipboard(text: str) -> bool
282
+ ```
283
+
284
+ **参数说明:**
285
+
286
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
287
+ | ------ | ---- | -------- | ------ | ------------------------ |
288
+ | `text` | str | 是 | - | 要设置到剪贴板的文本内容 |
289
+
290
+ **返回值:**
291
+
292
+ | 类型 | 描述 |
293
+ | ------ | ---------------- |
294
+ | `bool` | 设置操作是否成功 |
295
+
296
+ **示例:**
297
+
298
+ ```python
299
+ from kuaijs import ime
300
+
301
+ # 设置剪贴板内容
302
+ if ime.setClipboard("要复制的文本"):
303
+ print("剪贴板设置成功")
304
+ else:
305
+ print("剪贴板设置失败")
306
+ ```
@@ -0,0 +1,330 @@
1
+ # 日志模块 (Logger)
2
+
3
+ 日志模块提供了完整的日志记录功能,支持不同的日志级别、文件输出、日志管理等。
4
+
5
+ - **日志级别** 开发环境默认 `debug`,打包环境默认 `info`。如需自定义日志级别,可使用 `setLoggerLevel` 方法。
6
+ - **日志存储路径** 日志文件默认存储在我的 iPhone->应用名称的文件夹->Logger 目录中。
7
+ - **日志文件大小** 每个日志文件最大 10MB,超过会自动创建新文件。
8
+ - **日志文件数量** 最多保留 10 个日志文件,超过会自动删除旧文件。
9
+ - **关闭日志输出** 可使用 `setLoggerLevel("off")` 关闭所有日志输出。
10
+ - **关闭存储日志** 可使用 `setLogToFile(False)` 关闭将日志输出到文件的功能。
11
+
12
+ ## 日志级别
13
+
14
+ 日志模块支持以下级别(按严重程度排序):
15
+
16
+ 1. **error** - 错误日志,记录程序错误和异常
17
+ 2. **warn** - 警告日志,记录潜在问题
18
+ 3. **info** - 信息日志,记录一般信息
19
+ 4. **debug** - 调试日志,记录详细的调试信息
20
+ 5. **off** - 关闭日志输出
21
+
22
+ ## 日志配置
23
+
24
+ ### setLoggerLevel - 设置日志输出级别。
25
+
26
+ ```python
27
+ def setLoggerLevel(level: str) -> None
28
+ ```
29
+
30
+ **参数:**
31
+
32
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
33
+ | ------- | ---- | -------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
34
+ | `level` | str | 是 | | 日志级别 <br>`error` 只输出错误日志 <br>`warn` 输出警告和错误日志 <br>`info` 输出信息、警告和错误日志 <br>`debug` 输出所有级别的日志 <br>`off` 关闭所有日志输出 |
35
+
36
+ **默认值:**
37
+
38
+ - 开发环境:`"debug"`
39
+ - 生产环境:`"info"`
40
+
41
+ **示例:**
42
+
43
+ ```python
44
+ from kuaijs import logger
45
+
46
+ # 设置为调试级别(输出所有日志)
47
+ logger.setLoggerLevel("debug")
48
+
49
+ # 设置为信息级别(不输出调试日志)
50
+ logger.setLoggerLevel("info")
51
+
52
+ # 设置为错误级别(只输出错误日志)
53
+ logger.setLoggerLevel("error")
54
+
55
+ # 关闭所有日志
56
+ logger.setLoggerLevel("off")
57
+
58
+ # 根据环境动态设置
59
+ isDevelopment = True # 根据实际情况判断
60
+ logger.setLoggerLevel("debug" if isDevelopment else "info")
61
+ ```
62
+
63
+ ### setLogToFile - 设置是否将日志输出到文件。
64
+
65
+ ```python
66
+ def setLogToFile(enabled: bool) -> None
67
+ ```
68
+
69
+ **参数:**
70
+
71
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
72
+ | --------- | ---- | -------- | ------ | ------------------------- |
73
+ | `enabled` | bool | 是 | | 是否启用文件输出 默认开启 |
74
+
75
+ **示例:**
76
+
77
+ ```python
78
+ from kuaijs import logger
79
+
80
+ # 启用文件日志(默认)
81
+ logger.setLogToFile(True)
82
+
83
+ # 禁用文件日志(只在控制台输出)
84
+ logger.setLogToFile(False)
85
+
86
+ # 根据配置动态设置
87
+ enableFileLog = True # 从配置文件读取
88
+ logger.setLogToFile(enableFileLog)
89
+ ```
90
+
91
+ ### setMaxLogFileCount - 设置最大日志文件数量 默认 10 个文件
92
+
93
+ ```python
94
+ def setMaxLogFileCount(count: int) -> None
95
+ ```
96
+
97
+ **注意事项:**
98
+
99
+ - 1053 版本开始支持
100
+ - 使用此方法请放到你的代码最前面,确保在其他日志输出之前设置。
101
+
102
+ **参数:**
103
+
104
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
105
+ | ------- | ---- | -------- | ------ | ---------------- |
106
+ | `count` | int | 是 | | 最大日志文件数量 |
107
+
108
+ **示例:**
109
+
110
+ ```python
111
+ from kuaijs import logger
112
+
113
+ # 设置最大日志文件数量为 5 个文件
114
+ logger.setMaxLogFileCount(5)
115
+ ```
116
+
117
+ ### setMaxLogFileSize - 设置最大日志文件大小 默认 10MB
118
+
119
+ ```python
120
+ def setMaxLogFileSize(size: int) -> None
121
+ ```
122
+
123
+ **注意事项:**
124
+
125
+ - 1053 版本开始支持
126
+ - 使用此方法请放到你的代码最前面,确保在其他日志输出之前设置。
127
+
128
+ **参数:**
129
+
130
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
131
+ | ------ | ---- | -------- | ------ | ---------------------------- |
132
+ | `size` | int | 是 | | 最大日志文件大小(单位:MB) |
133
+
134
+ **示例:**
135
+
136
+ ```python
137
+ from kuaijs import logger
138
+
139
+ # 设置最大日志文件大小为 5MB
140
+ logger.setMaxLogFileSize(5)
141
+ ```
142
+
143
+ ### resetLogFile - 重置日志文件,创建新的日志文件。
144
+
145
+ ```python
146
+ def resetLogFile() -> None
147
+ ```
148
+
149
+ **用途:**
150
+
151
+ - 避免单个日志文件过大
152
+ - 按时间或事件分割日志
153
+ - 清理历史日志
154
+
155
+ **示例:**
156
+
157
+ ```python
158
+ from kuaijs import logger
159
+
160
+ # 手动重置日志文件
161
+ logger.resetLogFile()
162
+ logger.info("日志文件已重置")
163
+
164
+ # 重置日志文件
165
+ def reset_log_file():
166
+ logger.info("开始日志轮转")
167
+ logger.resetLogFile()
168
+ logger.info("日志轮转完成")
169
+
170
+ # 根据文件大小重置(需要配合文件系统检查)
171
+ def check_and_reset_log():
172
+ # 这里需要配合文件模块检查日志文件大小
173
+ # 如果文件过大则重置
174
+ logger.resetLogFile()
175
+ ```
176
+
177
+ ## 日志输出方法
178
+
179
+ ### debug - 输出调试级别的日志。
180
+
181
+ ```python
182
+ def debug(*args: object) -> None
183
+ ```
184
+
185
+ **参数:**
186
+
187
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
188
+ | ------ | --------- | -------- | ------ | ---------------- |
189
+ | `args` | object... | 是 | | 要输出的日志内容 |
190
+
191
+ **用途:**
192
+
193
+ - 详细的程序执行信息
194
+ - 变量值和状态信息
195
+ - 函数调用跟踪
196
+
197
+ **示例:**
198
+
199
+ ```python
200
+ from kuaijs import logger
201
+ import json
202
+
203
+ logger.debug("程序开始执行")
204
+
205
+ # 函数调用跟踪
206
+ def process_data(data):
207
+ logger.debug(f"process_data 开始,参数: {json.dumps(data)}")
208
+
209
+ # 处理逻辑...
210
+
211
+ logger.debug("process_data 完成")
212
+ ```
213
+
214
+ ### info - 输出信息级别的日志。
215
+
216
+ ```python
217
+ def info(*args: object) -> None
218
+ ```
219
+
220
+ **参数:**
221
+
222
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
223
+ | ------ | --------- | -------- | ------ | ---------------- |
224
+ | `args` | object... | 是 | | 要输出的日志内容 |
225
+
226
+ **用途:**
227
+
228
+ - 程序正常运行信息
229
+ - 重要操作的确认
230
+ - 状态变更通知
231
+
232
+ **示例:**
233
+
234
+ ```python
235
+ from kuaijs import logger
236
+
237
+ logger.info("应用程序启动成功")
238
+ logger.info("用户登录成功")
239
+ logger.info("文件下载完成")
240
+ count = 100
241
+ logger.info(f"处理了 {count} 条记录")
242
+
243
+ # 操作确认
244
+ def save_settings(settings):
245
+ # 保存设置...
246
+ logger.info("设置已保存")
247
+ ```
248
+
249
+ ### warn - 输出警告级别的日志。
250
+
251
+ ```python
252
+ def warn(*args: object) -> None
253
+ ```
254
+
255
+ **参数:**
256
+
257
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
258
+ | ------ | --------- | -------- | ------ | ---------------- |
259
+ | `args` | object... | 是 | | 要输出的日志内容 |
260
+
261
+ **用途:**
262
+
263
+ - 潜在的问题
264
+ - 不推荐的操作
265
+ - 性能警告
266
+ - 兼容性问题
267
+
268
+ **示例:**
269
+
270
+ ```python
271
+ from kuaijs import logger, device
272
+ import time
273
+
274
+ logger.warn("电池电量低于 20%")
275
+ logger.warn("网络连接不稳定")
276
+ logger.warn("使用了已废弃的 API")
277
+ logger.warn("内存使用率较高")
278
+
279
+ # 条件警告
280
+ battery = device.getBatteryInfo()
281
+ if battery.level < 20:
282
+ logger.warn(f"电池电量不足: {battery.level}%")
283
+
284
+ # 性能警告
285
+ def perform_heavy_task():
286
+ start_time = time.time() * 1000
287
+
288
+ # 执行耗时任务...
289
+
290
+ duration = time.time() * 1000 - start_time
291
+ if duration > 5000:
292
+ logger.warn(f"任务执行时间过长: {duration}ms")
293
+ ```
294
+
295
+ ### error - 输出错误级别的日志。
296
+
297
+ ```python
298
+ def error(*args: object) -> None
299
+ ```
300
+
301
+ **参数:**
302
+
303
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
304
+ | ------ | --------- | -------- | ------ | ---------------- |
305
+ | `args` | object... | 是 | | 要输出的日志内容 |
306
+
307
+ **用途:**
308
+
309
+ - 程序错误和异常
310
+ - 操作失败
311
+ - 系统错误
312
+ - 致命问题
313
+
314
+ **示例:**
315
+
316
+ ```python
317
+ from kuaijs import logger
318
+
319
+ logger.error("网络请求失败")
320
+ logger.error("文件读取错误")
321
+ logger.error("数据库连接失败")
322
+
323
+ # 异常处理
324
+ try:
325
+ # 可能出错的操作
326
+ # result = risky_operation()
327
+ pass
328
+ except Exception as e:
329
+ logger.error(f"操作失败: {str(e)}")
330
+ ```