每条日志一行,依次为时间、级别、来源、请求编号与消息:
10-14 18:03:18.452 INFO suleimanhauwau011-gmail-com 账号就绪 | 层级=pro | 模型=12 | 窗口=1048576 | 耗时=1.6s
10-14 18:05:02.117 INFO request #3f9a1c 请求开始 | chat | gemini-3.8-flash | 流式=是 | 消息=3
10-14 18:05:06.645 INFO request #3f9a1c 请求完成 | 200 | gemini-3.8-flash | 4.528s | 输入 11 · 回复 92 | 20.3 tokens/s | 思考强度=low
- 来源为
service(服务)、request(请求)或账号 ID,账号 ID 按最长的一个对齐 - 请求编号是请求 ID 去掉
req_后的前 6 位,完整 ID 在响应头X-Request-ID与管理端中 - 消息为
阶段 | 键=值 | ...,原因等多行内容缩进写在下一行 - 输出到终端时按级别、来源与 HTTP 状态着色,设置环境变量
NO_COLOR或输出重定向到文件时不着色 LOG_FORMAT=json时每行一个 JSON 对象,字段为time、level、msg、event、source,请求事件另有request
LOG_LEVEL 取 debug、info、warn、error,默认 info,可在管理端设置页即时修改。debug 另外输出每次上游 RPC 的名称、状态与耗时,非生成接口的访问,以及 Cookie 轮换结果。
| 消息 | 含义 |
|---|---|
Gemini-Web2API 启动、配置 |
版本、Go 与系统,监听地址、认证路径、账号数、代理、是否设置 API key、历史记录与日志级别 |
服务已启动 |
开始接受请求,同时给出管理端地址;账号在其后并行初始化 |
账号就绪、账号初始化失败 |
每个账号的层级、模型数、上下文窗口与耗时,或失败原因;失败的账号按 ACCOUNT_COOLDOWN 间隔继续初始化 |
账号初始化完成 |
首轮初始化后各状态的账号数、访客会话状态与耗时 |
没有账号 |
认证目录中没有账号;访客会话就绪时只提供访客会话可用的模型,否则生成接口返回 503;在管理端导入或运行 setup 后可用 |
没有可用账号 |
全部账号都未就绪;访客会话就绪时只提供访客会话可用的模型,否则生成接口返回 503 |
访客会话就绪、访客会话初始化失败、访客会话重读失败 |
来源为 guest 的未登录会话的模型数与耗时,或失败原因;初始化失败时按 ACCOUNT_COOLDOWN 间隔重试,就绪后每 10 分钟重读首页与模型目录 |
账号恢复就绪 |
初始化失败的账号在重试中就绪 |
账号目录变化 |
账号约每 10 分钟重读层级与模型目录,层级或模型增减时列出变化 |
账号认证续签、账号认证续签完成、账号会话失效 |
登录态失效时的续签过程 |
已同意服务条款、读取服务条款版本失败,按版本 0 同意 |
模型目录显示账号待同意服务条款时,按官网流程同意的条款版本 |
账号不可用 |
Cookie 轮换重读模型目录时账号状态码显示账号受限,带原因与该账号的官网处理入口;下一轮轮换再读 |
模型冷却、账号冷却、账号待认证 |
账号或账号内的单个模型移出调度,带结束时间与原因代码 |
网络错误,账号不冷却 |
连接、TLS 或代理错误,账号保持可调度 |
已通知上游停止生成 |
客户端中途断开或生成流长时间无进展时,向官网发送停止请求 |
设置已保存 |
管理端保存设置,列出修改的配置项 |
服务停止、服务已停止 |
收到停止信号时的活动请求数,最多等待 10 秒后结束 |
生成请求从开始到结束输出以下阶段:
| 消息 | 含义 |
|---|---|
请求开始 |
协议、模型、是否流式、消息数与工具数 |
账号开始处理 |
选中的账号与实际模型,排队时附排队时长 |
附件上传完成 |
附件数量、大小与上传耗时 |
收到首个输出 |
首个正文、思考、代码或媒体事件及等待时长 |
账号切换 |
尚未输出时上游失败,换账号重试,下一行为原因 |
后台生成轮询 |
Deep Research 等后台生成的轮询次数与已等待时间 |
请求完成 |
状态码、模型、耗时、输入、思考、回复 token、生成速度与按账号模型目录选定的思考强度 |
请求失败 |
状态码、模型与耗时,下一行为原因 |
请求取消 |
客户端断开或管理端取消时所处的阶段,状态记为 499 |
请求失败 的状态码低于 500(含 429)时为 WARN,500 及以上为 ERROR;请求取消 为 WARN。
请求在同一阶段停留 15 秒没有进展时写一条等待日志,之后每 60 秒重复一次;请求准备等待 之后收到响应头时写 请求准备结束,附等待时长与状态码,事件流停顿 之后收到新事件时写 事件流恢复:
| 消息 | 含义 |
|---|---|
等待可用账号 |
所有可用账号的请求槽都被占用 |
请求准备等待 |
上传附件或发送生成请求 |
上游首事件等待 |
已收到响应头,尚未收到首个事件;附上游心跳数与已读取字节 |
事件流停顿 |
已开始输出后长时间没有新事件;附最近事件、心跳数与已读取字节 |
非生成接口只在失败时记录:鉴权失败(OpenAI 与 Anthropic 为 401,Gemini 为 400 或 403)、未知路由(404)与 请求被拒绝(其他 4xx、5xx)。
生成请求结束后写入 data/requests.db(SQLite),记录时间、协议、路径、模型、实际模型、账号、状态、耗时、首事件时间、排队时间、token 用量、工具调用数、错误与每次换号的尝试。记录保留 90 天,另按小时与本地日汇总。管理端用量页按时间范围、模型、账号、协议与结果统计请求数、成功率、延迟分位、token 与估算费用,并可导出 CSV。
估算费用按 Gemini API 付费层 Standard 的当前单价计算,输入超过 200,000 token 时按长上下文单价计算;没有对应单价的模型与工具不计费用。
管理端用量页把范围内的记录导出为 CSV,列为 time、id、response_id、protocol、path、model、provider_model、account、status、state、duration_ms、first_event_ms、queue_ms、input_tokens、reasoning_tokens、reply_tokens、total_tokens、tool_calls、error、attempts。
REQUEST_BODY_LOG=true 时另保存最近 1000 条请求与响应正文,每段最多 64 KiB,在管理端请求详情中查看。
LOG_FILE=true(默认)时控制台的每条日志同时以同一格式、不带颜色写入数据目录下的 data/logs/gemini-web2api.log,命令行版、Docker 与桌面版相同。单个文件 10 MB 轮转,轮转文件名带本地时间,目录总量超过 LOG_MAX_TOTAL_MB(默认 500,不小于 20)时删除最旧的文件。两项在管理端设置页保存后立即生效。