python从大日志文件中提取某天日志

技术分享 2025-11-28

从一个大文件(tomcat日志)中提取某一天的日志。

import sys
from pathlib import Path

def extract_date_logs(
    log_path: str = "/opt/Seeyon/DEEService/DEE_Service/logs/catalina.out",
    target_date: str = "2025-11-27",
    output_path: str = "2025-11-27_catalina_logs.txt"
):

    # 验证日志文件是否存在
    log_file = Path(log_path)
    if not log_file.exists() or not log_file.is_file():
        print(f"错误:日志文件不存在或不是文件 -> {log_path}")
        sys.exit(1)

    # 统计匹配行数
    match_count = 0

    try:
        # 逐行读取日志(低内存占用,支持超大文件)
        with open(log_file, "r", encoding="utf-8", errors="ignore") as infile, \
             open(output_path, "w", encoding="utf-8") as outfile:

            for line in infile:
                # 核心匹配:日志行以 "2025-11-27 " 开头(日期后带空格,适配 catalina.out 格式)
                if line.startswith(f"{target_date} "):
                    outfile.write(line)
                    match_count += 1

    except PermissionError:
        print(f"错误:无权限读取日志文件或写入输出文件,请用 sudo 运行!")
        sys.exit(1)
    except Exception as e:
        print(f"错误:处理日志时异常 -> {str(e)}")
        sys.exit(1)

    # 输出结果统计
    if match_count > 0:
        print(f"提取成功!共找到 {match_count} 行 {target_date} 日的日志")
        print(f"日志已保存到:{output_path}")
    else:
        print(f"未找到 {target_date} 日的日志(可能该日期无日志,或日志格式不匹配)")

if __name__ == "__main__":
    # 直接运行即可(默认参数已指向你的日志文件和目标日期)
    extract_date_logs()

评论 (0)

发表评论

最多500字符

验证码

暂无评论

成为第一个评论的人吧!

关于站长

三天饿九顿

三天饿九顿
19 年站点

今天过得怎么样,梦想是不是更远了?

1051
文章
5
分类
2
链接

搜索

最新评论

JosephWen 2026-01-06 04:08:21

有教育意义的 旅行杂志! 越来越棒! <a href=https://iqvel.com/zh-Ha...

查看: debian系统的美国VPS推荐系统源
Devops 2025-12-21 12:57:38

docker下载镜像太慢了,有办法解决吗?

查看: docker版本zabb...
天才小熊猫 2025-12-19 09:55:18

测试可用。

查看: python批量读取文件中的文件名并删除
Kingbase 2025-11-23 18:54:36

是否能提供一个下载地址?

查看: 人大金仓数据库建用户建库