跳到正文

Log 日志文件 API ​

提供 foobar2000 配置目录日志文件的格式化写入、尾部按行回读与清空能力。

Log API - 日志文件 (3 个 API) ​

log.write ​

向 foobar2000 配置目录内的日志文件写入一行日志(默认写入 webview_ui.log,支持通过 file 指定自定义文件名)

参数类型必填说明
messageany否待写入的日志正文内容(字符串原样输出,对象或数组序列化为 JSON 文本;若与 args 同时提供则以本字段为准)
argsany[]否待写入的参数值列表(以空格连接输出;字符串原样输出,其他类型序列化为 JSON 文本;仅在缺省 message 时生效)
levelstring否日志记录级别(自动转为大写并置于行首方括号内)默认 "info"。
appendboolean否是否以追加模式写入(默认 true;为 false 时清空并替换文件内容)默认 true。
timestampboolean否是否在行首添加本地时间戳(格式为 [YYYY-MM-DD HH:MM:SS.mmm])默认 true。
filestring否配置目录内的自定义日志文件名(须为以 .log 或 .txt 结尾的合法纯文件名,且不可使用 CON 等 Windows 保留设备名;不合法时将自动写入 webview_ui.log)

返回值

字段类型说明
pathstring实际写入的日志文件完整绝对路径

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

需提供 message 或 args 之一;两者都没有时以 INVALID_PARAMS(message is required)失败。

javascript
await fb2k.invoke('log.write', {
    message: '播放开始',
    level: 'info',
    file: 'playback.log'
});

log.read ​

读取 webview_ui.log 文件末尾的指定行数(文件不存在时返回空内容)

参数类型必填说明
linesinteger否从日志文件末尾逆向读取的最大行数不小于 0。默认 100。

返回值

字段类型说明
contentstring读取的各行日志内容(以换行符 \n 拼接)
linesstring[]读取的各行日志字符串数组(文件不存在时缺省)
lineCountinteger实际读取返回的日志行数
totalLinesinteger日志文件包含的总行数(文件不存在时缺省)

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

json
{
    "success": true,
    "content": "...",
    "lines": ["[2026-02-10 12:00:00.123][INFO] ..."],
    "lineCount": 50,
    "totalLines": 200
}

log.clear ​

清空 webview_ui.log 日志文件内容

无参数。

返回值

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

契约补充 ​

以下补充这些方法的完整参数契约,不改变前文的已有说明。

Contract 补充:log.write ​

参数类型必填默认值说明
messagestring否可省略日志文本;非字符串会序列化。与 args 至少提供其一,否则返回 message is required。
argsarray否[]当省略 message 时,用空格拼接的参数列表。
filestring否可省略配置目录下的目标文件名;默认 webview_ui.log。
levelstring否info级别文本,转为大写后写入行前缀。
appendboolean否truetrue 追加写入,false 覆盖重写。
timestampboolean否true是否在行首写入时间戳。

返回字段 ​

字段类型可选
errorstring是
successboolean否
pathjson否
js
await fb2k.invoke('log.write', { message: '播放开始' });