You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何按日期拆分日志文件数据并导出到不同文件

日志按天拆分实现方案

实现逻辑

  • 读取日志首行,解析Start-Date字段得到起始日期,首日文件命名格式为日两位+月两位+年两位.txt,对应示例中的260522.txt
  • 逐行遍历日志内容,自动跳过首行启动时间记录,过滤每行首尾多余空白字符
  • 识别每行前缀时间戳,若时间以00:开头则判定进入次日,关闭当前写入的文件,次日文件命名格式为日两位+月份英文缩写+四位年.txt,对应示例中的27May2022.txt
  • 将对应日志条目写入当前日期所属的文件

可直接运行的Python脚本

from datetime import datetime, timedelta
import re

# 修改为实际日志文件路径
LOG_PATH = "app.log"

# 解析首行起始日期
with open(LOG_PATH, 'r', encoding='utf-8') as f:
    first_line = f.readline().strip()
    date_match = re.search(r'Start-Date:\s+(\w{3}\s+\w{3}\s+\d{1,2}\s+\d{4})', first_line)
    if not date_match:
        raise ValueError("日志首行未找到合法起始日期")
    current_date = datetime.strptime(date_match.group(1), "%a %b %d %Y")
    current_filename = current_date.strftime("%d%m%y") + ".txt"
    current_file = open(current_filename, 'w', encoding='utf-8')

    # 逐行处理日志条目
    for line in f:
        line = line.strip()
        if not line:
            continue
        time_part = line.split()[0]
        # 判定是否跨天,避免重复切换文件
        if time_part.startswith("00:") and current_filename == current_date.strftime("%d%m%y") + ".txt":
            current_file.close()
            current_date += timedelta(days=1)
            current_filename = current_date.strftime("%d%b%Y") + ".txt"
            current_file = open(current_filename, 'w', encoding='utf-8')
        # 写入当前行,若需要去重可在此处增加重复行判断逻辑
        current_file.write(line + "\n")

current_file.close()

适配说明

  • 脚本默认读取同目录下名为app.log的日志文件,可修改LOG_PATH变量指定实际日志路径
  • 日期解析默认适配示例中的MDT时区格式,若日志输出时区变化可调整strptime的匹配规则
  • 如果需要过滤重复条目、异常时间点记录,可在写入逻辑前增加对应判断即可

内容的提问来源于stack exchange,提问作者Apoorva Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 06:06:25