LogTimeline AI —— 日志时间戳模糊查询器

August 15, 2026 · View on GitHub

输入一句自然语言时间描述(如「昨天下午」「3 小时前」「凌晨 12 点」),自动解析成时间范围、扫描本地日志、输出排查结论。查询意图(如「服务器为什么崩了」)可用 --since 兜底或配合 --no-llm 离线统计使用。

Python License: GPL v3 Tests Deps

面向运维与调试场景的本地日志排查工具:中文自然语言 → 时间范围 → 日志过滤 → 归因结论。全程本地运行,隐私可控。

功能特性

能力说明
自然语言时间解析「昨天下午」「3 小时前」「凌晨 12 点」「上周三 14:00-15:00」等中文表达 → 精确时间范围
多格式日志兼容常见时间戳格式自动识别、编码 auto(UTF-8/GBK 回退)、流式过滤不占内存
双模式归因离线统计(--no-llm,断网可用)或 LLM 归因(默认,失败自动降级离线)
零数据出本机离线模式日志完全本地;LLM 模式仅发送 ≤2KB token 的窗口样本
三种界面CLI、Web UI(webui,零第三方依赖)、JSON 输出(供脚本/管道消费)

快速开始

# 安装(httpx / rich 自动装)
pip install -e .

# 离线快速排查(不调用任何外部服务)
lq "昨天下午" --files demo.log --no-llm

# 完整归因(需 LLM 环境变量;查询意图配合时间描述)
export LLM_BASE_URL=https://api.deepseek.com/v1
export LLM_API_KEY=sk-xxxx
export LLM_MODEL=deepseek-chat
lq "昨天下午" --files demo.log --since 2026-08-14T13:00:00+08:00   # 时间词 + 意图由 LLM 归因给出

# 启动 Web UI(默认 127.0.0.1:8765)
webui

命令参考

参数说明
--files f1 f2 ...指定日志文件
--dir d [--pattern *.log]递归扫描目录
--journalctl [--service s]读取 systemd 日志(仅 Linux)
--max-lines N返回行数上限(默认 500,0 = 只统计)
--since RFC3339时间解析失败时的绝对时间兜底
--no-llm / --dry-run / --json离线统计 / 只解析 / 机器可读输出

退出码:0 成功 · 1 参数错误 · 2 无匹配文件/0 行命中 · 3 LLM 归因失败(统计仍输出)。

项目结构

lq.py             CLI 入口(参数解析、退出码)
time_parser.py    中文自然语言 → 时间范围(纯函数)
log_filter.py     多文件流式过滤 + 级别统计
llm_summary.py    LLM 归因 / 离线统计(外部调用唯一出口)
webui.py          零依赖 Web 前端(内嵌 HTML/JS/CSS)
config.py         环境变量配置
tests/            pytest 测试(124 例,不触网)

测试

python -m pytest tests/ -q

隐私与免责

  • --no-llm / --dry-run 完全本地;默认模式会把时间窗口内的日志样本(≤2KB token 量级)发送到你配置的 LLM_BASE_URL,启动时明确提示发送行数与目标地址。
  • 本工具仅做只读分析,不修改任何日志文件;LLM 归因结论仅供参考,请结合原始日志人工复核。

本项目仅供学习交流与演示用途,不构成任何形式的商业服务或技术承诺。软件按「现状」提供,不作任何明示或暗示的保证,包括但不限于适销性、特定用途适用性与非侵权性。 您理解并同意:使用本项目即表示您自行承担全部风险。如您在使用过程中发现缺陷或问题,欢迎通过 GitHub Issues 反馈,但作者不因使用本软件所直接或间接产生的任何损失(包括但不限于数据丢失、业务中断、第三方索赔)承担责任。 本项目以功能演示与学习交流为主要目的,其架构设计、安全基线、容错机制与性能表现均未按生产级标准进行验证与加固,不适用于实际生产环境或关键业务场景。任何将本项目部署于生产系统、对外提供服务、或将其接入真实业务工作流的做法,均属使用者的自主决策行为;由此产生的任何直接或间接不良后果,包括但不限于服务中断、数据损坏或泄露、业务损失、合规风险、以及因依赖本软件而引发的第三方纠纷,开发者均不承担任何责任。若您确有生产级使用需求,请在充分评估与自行加固(包括但不限于安全审计、压力测试、代码审查)后,自行承担相应风险。

License

GPL-3.0 — Copyright (C) 2026 anyuer678