6.12 --verbose - 启用详细日志记录

第 6 章 · CLI 标志说明 · 第2部分:命令参考

概述#

--verbose 标志启用详细的日志记录,显示 Claude Code 执行过程中的详细信息。这对于调试、问题排查和理解系统行为非常有用。

基本语法#

bash
复制
claude --verbose

日志级别#

级别描述使用场景
默认只显示必要的信息正常使用
--verbose显示详细日志调试和问题排查
--verbose --verbose显示更详细的日志深度调试

使用场景#

1. 调试工具调用#

bash
复制
# 查看工具调用的详细信息claude --verbose -p "读取项目中的所有 Python 文件" # 输出会显示:# - 哪些工具被调用# - 工具调用的参数# - 工具调用的结果

2. 问题排查#

bash
复制
# 当遇到问题时,使用详细日志claude --verbose -p "生成代码"# 可以看到:# - 请求的详细信息# - 响应的状态# - 错误信息(如果有)

3. 性能分析#

bash
复制
# 分析性能瓶颈claude --verbose -p "处理大量数据" # 可以看到:# - 每个操作的耗时# - 数据传输的大小# - 系统资源使用情况

4. 理解系统行为#

bash
复制
# 了解 Claude Code 的工作原理claude --verbose -p "解释这段代码"# 可以看到:# - 如何解析请求# - 如何选择工具# - 如何生成响应

高级用法#

1. 与其他标志组合#

bash
复制
# 详细日志 + JSON 输出claude --verbose --output-format json -p "分析代码" # 详细日志 + 限制工具claude --verbose --allowedTools "Read""Grep" -p "搜索代码" # 详细日志 + 自定义系统提示claude --verbose --system-prompt "你是一位 Python 专家" -p "编写代码"

2. 保存详细日志#

bash
复制
# 将详细日志保存到文件claude --verbose -p "生成代码"2>&1|tee verbose.log # 只保存错误日志claude --verbose -p "生成代码"2> error.log

3. 过滤日志#

bash
复制
# 只显示错误日志claude --verbose -p "生成代码"2>&1|grep -i "error" # 只显示工具调用claude --verbose -p "生成代码"2>&1|grep"tool" # 只显示时间戳claude --verbose -p "生成代码"2>&1|grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}"

4. 实时监控#

bash
复制
# 实时监控日志输出claude --verbose -p "生成代码"|tee -a monitor.log # 使用 tail 实时查看日志claude --verbose -p "生成代码"> log.txt &tail -f log.txt

实际应用示例#

示例 1: 调试脚本#

bash
复制
#!/bin/bash# debug-script.sh echo"开始调试..."echo"详细日志将保存到 debug.log" # 运行命令并保存详细日志claude --verbose -p "生成代码"2>&1|tee debug.log # 分析日志echo"分析日志..."grep -i "error" debug.log grep"tool" debug.log |wc -l echo"调试完成"

示例 2: 性能分析#

bash
复制
#!/bin/bash# performance-analysis.shecho"开始性能分析..."# 记录开始时间START_TIME=$(date +%s)# 运行命令并保存详细日志claude --verbose -p "处理大量数据"2>&1|tee performance.log # 记录结束时间END_TIME=$(date +%s)# 计算总耗时DURATION=$((END_TIME - START_TIME))echo"总耗时: $DURATION 秒"# 分析性能日志echo"工具调用次数:"grep"tool" performance.log |wc -l echo"数据传输量:"grep"bytes" performance.log |awk'{sum+=$2} END {print sum " bytes"}'

示例 3: 错误追踪#

bash
复制
#!/bin/bash# error-tracker.sh echo"开始追踪错误..." # 运行命令并保存详细日志claude --verbose -p "生成代码"2>&1|tee error.log # 提取错误信息echo"发现的错误:"grep -i "error" error.log |nl # 提取警告信息echo"发现的警告:"grep -i "warning" error.log |nl # 统计错误和警告数量ERROR_COUNT=$(grep -ic "error" error.log)WARNING_COUNT=$(grep -ic "warning" error.log) echo"错误总数: $ERROR_COUNT"echo"警告总数: $WARNING_COUNT"

示例 4: 日志分析工具#

bash
复制
#!/bin/bash# log-analyzer.shLOG_FILE=$1if[ -z "$LOG_FILE"];thenecho"用法: $0 "exit1fiecho"分析日志文件: $LOG_FILE"echo"---"# 统计工具调用echo"工具调用统计:"grep"tool""$LOG_FILE"|awk'{print $2}'|sort|uniq -c |sort -rn echo"---"# 统计错误echo"错误统计:"grep -i "error""$LOG_FILE"|wc -l echo"---"# 统计警告echo"警告统计:"grep -i "warning""$LOG_FILE"|wc -l echo"---"# 显示时间范围echo"时间范围:"grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}""$LOG_FILE"|head -1 grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}""$LOG_FILE"|tail -1

日志内容说明#

1. 请求日志#

log
复制
[2024-01-15 10:30:00] INFO: Request received [2024-01-15 10:30:00] INFO: Query: "生成代码" [2024-01-15 10:30:00] INFO: Model: claude-opus-4-5

2. 工具调用日志#

log
复制
[2024-01-15 10:30:01] INFO: Tool called: Read [2024-01-15 10:30:01] INFO: Parameters: {"file_path": "src/main.py"} [2024-01-15 10:30:01] INFO: Result: Success

3. 响应日志#

log
复制
[2024-01-15 10:30:02] INFO: Response generated [2024-01-15 10:30:02] INFO: Tokens: 150 [2024-01-15 10:30:02] INFO: Duration: 1.5s

4. 错误日志#

log
复制
[2024-01-15 10:30:03] ERROR: Tool failed: Write [2024-01-15 10:30:03] ERROR: Error: Permission denied

最佳实践#

1. 选择合适的日志级别#

bash
复制
# 正常使用:不需要详细日志claude -p "生成代码" # 调试问题:使用详细日志claude --verbose -p "生成代码" # 深度调试:使用更详细的日志claude --verbose --verbose -p "生成代码"

2. 保存日志以便分析#

bash
复制
# 为每次运行创建单独的日志文件LOG_FILE="claude-$(date +%Y%m%d-%H%M%S).log"claude --verbose -p "生成代码"2>&1|tee"$LOG_FILE"

3. 定期清理日志#

bash
复制
# 清理 7 天前的日志find. -name "claude-*.log" -mtime +7 -delete

4. 使用日志分析工具#

bash
复制
# 使用 grep 过滤日志claude --verbose -p "生成代码"2>&1|grep"ERROR"# 使用 awk 分析日志claude --verbose -p "生成代码"2>&1|awk'{print $1, $2, $5}'# 使用 sed 格式化日志claude --verbose -p "生成代码"2>&1|sed's/INFO:/\x1b[32mINFO:\x1b[0m/g'

常见问题#

Q1: 详细日志会影响性能吗?#

A: 会有轻微的性能影响,因为需要记录更多的信息。但对于大多数应用场景来说,影响可以忽略不计。

Q2: 如何只查看特定类型的日志?#

A: 使用 grep 过滤日志输出:

bash
复制
claude --verbose -p "生成代码"2>&1|grep"ERROR"

Q3: 日志文件会变得很大吗?#

A: 会。建议定期清理旧日志,或者使用日志轮转工具。

Q4: 可以自定义日志格式吗?#

A: 不可以直接自定义。但可以使用 sed、awk 等工具格式化日志输出。

Q5: 如何在日志中添加自定义信息?#

A: 可以在命令中添加 echo 语句:

bash
复制
echo"开始处理..."|tee -a log.txt claude --verbose -p "生成代码"2>&1|tee -a log.txt echo"处理完成"|tee -a log.txt

与其他工具的集成#

1. 与 grep 集成#

bash
复制
# 过滤错误日志claude --verbose -p "生成代码"2>&1|grep -i "error" # 过滤工具调用claude --verbose -p "生成代码"2>&1|grep"tool"

2. 与 awk 集成#

bash
复制
# 提取特定字段claude --verbose -p "生成代码"2>&1|awk'{print $1, $5}'# 统计工具调用次数claude --verbose -p "生成代码"2>&1|awk'/tool/ {count++} END {print count}'

3. 与 sed 集成#

bash
复制
# 高亮显示错误claude --verbose -p "生成代码"2>&1|sed's/ERROR:/\x1b[31mERROR:\x1b[0m/g' # 格式化时间戳claude --verbose -p "生成代码"2>&1|sed's/\[//g'|sed's/\]//g'

4. 与日志管理工具集成#

bash
复制
# 使用 logrotate 管理日志# /etc/logrotate.d/claude/path/to/claude-*.log {daily rotate 7compress missingok notifempty }