可以使用远程调试访问现有实例,但需要改一下你的chrome快捷方式
# Chrome 控制台日志抓取工具
这个工具允许 iflow CLI 通过 Chrome DevTools Protocol (CDP) 实时抓取现有 Chrome 浏览器的控制台日志。
## 功能特性
-
实时抓取 Chrome 控制台日志(console.log/error/warn/info/debug)
-
显示日志时间戳、类型、来源文件和行号
-
支持所有日志级别
-
跨平台支持(Windows/macOS/Linux)
-–
## 零基础部署指南
### 第一部分:编写脚本
#### 1. 创建日志抓取脚本
在项目目录下创建文件 `chrome-log-catcher.js`,内容如下:
```javascript
const CDP = require(‘chrome-remote-interface’);
const DEBUG_PORT = 9222;
let client = null;
async function captureConsoleLogs() {
try {
client = await CDP({ port: DEBUG_PORT });
const { Console, Runtime } = client;
await Promise.all(\[Console.enable(), Runtime.enable()\]);
console.log('✅ 已连接到 Chrome,开始抓取控制台日志...');
console.log('📝 按 Ctrl+C 停止抓取\\n');
Console.messageAdded(({ message }) => {
const logType = message.level || 'log';
const logContent = message.parameters
? message.parameters.map(p => p.value || p.description).join(' ')
: message.text || '';
const logSource = message.url || message.source || 'unknown';
const lineNumber = message.line || '?';
const formattedLog = \`\[${new Date().toLocaleString('zh-CN')}\] \[${logType.toUpperCase()}\] \[${logSource}:${lineNumber}\] ${logContent}\`;
console.log(formattedLog);
});
client.on('disconnect', () => {
console.error('❌ 与 Chrome 的连接已断开');
process.exit(1);
});
} catch (err) {
console.error('❌ 连接 Chrome 失败:', err.message);
process.exit(1);
}
}
captureConsoleLogs();
process.on(‘SIGINT’, () => {
if (client) {
client.close();
}
console.log(‘\n
已停止抓取 Chrome 日志’);
process.exit(0);
});
```
#### 2. 创建一键启动脚本(可选)
在项目目录下创建批处理文件 `start-chrome-debug.bat`,内容如下:
```batch
@echo off
echo ========================================
echo Starting Chrome Remote Debugging
echo ========================================
echo.
echo [Step 1] Checking Chrome path…
set “CHROME_PATH=”
if exist “C:\Program Files\Google\Chrome\Application\chrome.exe” set “CHROME_PATH=C:\Program Files\Google\Chrome\Application\chrome.exe”
if exist “C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” set “CHROME_PATH=C:\Program Files (x86)\Google\Chrome\Application\chrome.exe”
if exist “%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe” set “CHROME_PATH=%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe”
if “%CHROME_PATH%”==“” (
echo.
echo \[ERROR\] Chrome not found
echo Please enter full path to chrome.exe:
set /p CHROME_PATH=
if not exist "%CHROME_PATH%" (
echo \[ERROR\] Path does not exist
pause
exit /b 1
)
)
echo.
echo [Step 2] Starting Chrome…
echo Chrome path: %CHROME_PATH%
echo Debug port: 9222
echo Temp dir: %TEMP%\ChromeDebugTemp
echo.
start “” “%CHROME_PATH%” --remote-debugging-port=9222 --user-data-dir=“%TEMP%\ChromeDebugTemp”
echo.
echo [Step 3] Checking result…
if %ERRORLEVEL% EQU 0 (
echo \[SUCCESS\] Chrome started
) else (
echo \[ERROR\] Failed to start Chrome
echo Error code: %ERRORLEVEL%
pause
exit /b 1
)
echo.
echo ========================================
echo Next step: Run this command:
echo node chrome-log-catcher.js
echo ========================================
echo.
pause
```
**创建文件提示**:
- 使用记事本或任意文本编辑器
- 将代码复制粘贴进去
- 保存时选择"所有文件"格式
- 文件名分别为 `chrome-log-catcher.js` 和 `start-chrome-debug.bat`
-–
### 第二部分:安装依赖
1. 打开命令行(按 `Win + R`,输入 `cmd`,按回车)
2. 切换到项目目录:
```bash
cd /d D:\iflow
```
3. 安装依赖包:
```bash
npm install chrome-remote-interface
```
-–
### 第三部分:配置 Chrome
#### 方法 A:修改快捷方式(推荐)
1. 找到 Chrome 快捷方式(桌面或开始菜单)
2. 右键点击,选择"属性"
3. 在"快捷方式"标签页中,找到"目标"一栏
4. 在路径最后添加参数(注意加空格):
```
–remote-debugging-port=9222 --user-data-dir=“%TEMP%\ChromeDebugTemp”
```
5. 点击"确定"保存
**示例**:
- 原路径:`“C:\Program Files\Google\Chrome\Application\chrome.exe”`
- 修改后:`“C:\Program Files\Google\Chrome\Application\chrome.exe” --remote-debugging-port=9222 --user-data-dir=“%TEMP%\ChromeDebugTemp”`
#### 方法 B:使用批处理脚本
直接双击运行 `start-chrome-debug.bat`。
#### 方法 C:手动启动(所有平台)
**Windows (CMD):**
```bash
start chrome --remote-debugging-port=9222 --user-data-dir=“%TEMP%\ChromeDebugTemp”
```
**macOS:**
```bash
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=“$HOME/ChromeDebugTemp”
```
**Linux:**
```bash
google-chrome --remote-debugging-port=9222 --user-data-dir=“$HOME/ChromeDebugTemp”
```
-–
### 第四步:启动 Chrome
双击修改后的 Chrome 快捷方式,或运行批处理脚本。
-–
### 第五步:启动日志抓取
1. 打开新的命令行窗口
2. 切换到项目目录:
```bash
cd /d D:\iflow
```
3. 运行日志抓取脚本:
```bash
node chrome-log-catcher.js
```
-–
### 第六步:测试
1. 在 Chrome 浏览器中打开任意网页
2. 按 `F12` 打开开发者工具
3. 在控制台中输入:
```javascript
console.log(‘测试日志’);
console.error(‘错误日志’);
console.warn(‘警告日志’);
```
4. 查看命令行窗口,应该会显示:
```
[2026/1/5 15:30:45] [LOG] [https://example.com:1] 测试日志
[2026/1/5 15:30:46] [ERROR] [https://example.com:1] 错误日志
[2026/1/5 15:30:47] [WARN] [https://example.com:1] 警告日志
```
-–
### 第七步:停止抓取
按 `Ctrl + C` 停止日志抓取。
-–
## 文件清单
部署完成后,您应该有以下文件:
```
D:\iflow\
├── chrome-log-catcher.js # 日志抓取脚本
├── start-chrome-debug.bat # 一键启动脚本(可选)
├── package.json # 依赖配置文件
└── node_modules\ # 依赖包目录
└── chrome-remote-interface\\ # Chrome 远程调试接口库
```
-–
## 快速开始(已部署完成)
如果已经完成部署,可以直接使用:
### 步骤 1:启动 Chrome 远程调试模式
双击修改后的 Chrome 快捷方式,或运行 `start-chrome-debug.bat`。
### 步骤 2:启动日志抓取
在新的命令行窗口中运行:
```bash
node chrome-log-catcher.js
```
### 步骤 3:在 Chrome 中生成日志
在 Chrome 浏览器中打开任意网页,在控制台执行 JavaScript 代码:
```javascript
console.log(‘这是一条普通日志’);
console.error(‘这是一条错误日志’);
console.warn(‘这是一条警告日志’);
console.info(‘这是一条信息日志’);
```
日志会实时显示在 `chrome-log-catcher.js` 的输出中。
## 输出格式
日志格式如下:
```
[2026/1/5 14:30:45] [LOG] [https://example.com/app.js:123\] 这是一条普通日志
[2026/1/5 14:30:46] [ERROR] [https://example.com/app.js:456\] 这是一条错误日志
[2026/1/5 14:30:47] [WARN] [https://example.com/app.js:789\] 这是一条警告日志
```
- `[时间]`: 日志产生的时间戳
- `[类型]`: 日志级别(LOG/ERROR/WARN/INFO/DEBUG)
- `[来源:行号]`: 日志来源的文件路径和行号
- `内容`: 日志的实际内容
## 与 iflow CLI 集成
### 方式 1:管道输出(实时处理)
将日志直接通过管道传给 iflow CLI:
```bash
node chrome-log-catcher.js | iflow [你的命令]
```
### 方式 2:日志文件(批量处理)
先将日志保存到文件,再让 iflow CLI 读取:
```bash
# 保存日志到文件
node chrome-log-catcher.js > chrome-logs.txt 2>&1 &
# 让 iflow CLI 读取日志文件
iflow [你的命令] --input chrome-logs.txt
```
## 依赖
- Node.js
- chrome-remote-interface