微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
94
scripts/ops/_check_latest_etl_log.py
Normal file
94
scripts/ops/_check_latest_etl_log.py
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
检查最新的 ETL 日志文件,查找 DWD 任务执行情况和错误信息
|
||||
"""
|
||||
|
||||
import os
|
||||
import glob
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
from dotenv import load_dotenv
|
||||
|
||||
def main():
|
||||
# 加载环境变量
|
||||
load_dotenv()
|
||||
|
||||
log_root = os.environ.get('LOG_ROOT')
|
||||
if not log_root:
|
||||
raise RuntimeError("LOG_ROOT 环境变量未设置")
|
||||
|
||||
log_dir = Path(log_root)
|
||||
print(f"查找日志目录: {log_dir}")
|
||||
|
||||
if not log_dir.exists():
|
||||
print(f"日志目录不存在: {log_dir}")
|
||||
return
|
||||
|
||||
# 获取所有日志文件并按修改时间排序
|
||||
log_files = list(log_dir.glob("*.log"))
|
||||
if not log_files:
|
||||
print("未找到日志文件")
|
||||
return
|
||||
|
||||
# 按修改时间排序,最新的在前
|
||||
log_files.sort(key=lambda x: x.stat().st_mtime, reverse=True)
|
||||
|
||||
print(f"找到 {len(log_files)} 个日志文件")
|
||||
print(f"最新日志文件: {log_files[0].name}")
|
||||
print(f"修改时间: {datetime.fromtimestamp(log_files[0].stat().st_mtime)}")
|
||||
|
||||
# 读取最新日志文件
|
||||
latest_log = log_files[0]
|
||||
|
||||
print(f"\n=== 检查最新日志: {latest_log.name} ===")
|
||||
|
||||
with open(latest_log, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 查找关键信息
|
||||
lines = content.split('\n')
|
||||
|
||||
# 查找 DWD 相关信息
|
||||
dwd_lines = [line for line in lines if 'DWD' in line]
|
||||
if dwd_lines:
|
||||
print(f"\n🔍 DWD 相关日志 ({len(dwd_lines)} 条):")
|
||||
for line in dwd_lines[-10:]: # 显示最后10条
|
||||
print(f" {line}")
|
||||
|
||||
# 查找错误信息
|
||||
error_lines = [line for line in lines if any(keyword in line.upper() for keyword in ['ERROR', 'EXCEPTION', 'FAILED', 'TRACEBACK'])]
|
||||
if error_lines:
|
||||
print(f"\n❌ 错误信息 ({len(error_lines)} 条):")
|
||||
for line in error_lines[-5:]: # 显示最后5条错误
|
||||
print(f" {line}")
|
||||
|
||||
# 查找成功信息
|
||||
success_lines = [line for line in lines if any(keyword in line.upper() for keyword in ['SUCCESS', 'COMPLETED', 'FINISHED'])]
|
||||
if success_lines:
|
||||
print(f"\n✅ 成功信息 ({len(success_lines)} 条):")
|
||||
for line in success_lines[-5:]: # 显示最后5条成功
|
||||
print(f" {line}")
|
||||
|
||||
# 查找数据处理统计
|
||||
stats_lines = [line for line in lines if any(keyword in line for keyword in ['rows', 'records', 'processed', 'inserted', 'updated'])]
|
||||
if stats_lines:
|
||||
print(f"\n📊 数据处理统计 ({len(stats_lines)} 条):")
|
||||
for line in stats_lines[-5:]: # 显示最后5条统计
|
||||
print(f" {line}")
|
||||
|
||||
# 显示日志文件大小和行数
|
||||
file_size = latest_log.stat().st_size
|
||||
line_count = len(lines)
|
||||
print(f"\n📋 日志文件信息:")
|
||||
print(f" 文件大小: {file_size:,} 字节")
|
||||
print(f" 总行数: {line_count:,} 行")
|
||||
|
||||
# 如果日志很大,显示最后几行
|
||||
if line_count > 50:
|
||||
print(f"\n📝 最后 10 行:")
|
||||
for line in lines[-10:]:
|
||||
if line.strip():
|
||||
print(f" {line}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user