Python脚本实现下载合并SAE日志

Python脚本实现下载合并SAE日志

简介

SAE(Sina App Engine)是新浪开发的基于云计算、数据存储及定时任务等功能的云平台。在SAE上部署的应用需要查看日志,而SAE日志的查看需要在SAE的管理控制台进行,比较麻烦。本文介绍如何使用Python脚本实现下载并合并SAE日志。

前置条件

  • 注册并创建SAE应用
  • 安装Python解释器(本文使用Python 3.7版本)
  • 安装相关库(本文使用requests、bs4、lxml库)

实现步骤

1. 获取SAE日志下载链接

首先需要登录SAE管理后台,进入我的应用->开发者->应用日志,然后打开浏览器的开发者工具,找到Network选项卡,随便点开一个日志,观察请求详情,可以看到有一个log关键字。通过搜索log关键字,可在请求URL参数中找到log参数,其值便是对应日志的下载链接。

2. 下载日志

通过requests库的get方法获取下载链接,并将响应内容存到本地。代码示例如下:

import requests

url = "SAE日志下载链接"
response = requests.get(url)
with open("log.txt", "wb") as f:
    f.write(response.content)

3. 合并日志

方法一:使用Linux命令cat

如果你使用Linux系统,可以使用cat命令将多个日志合并成一个文件。代码示例如下:

# 将log1.txt和log2.txt合并到merged_log.txt
! cat log1.txt log2.txt > merged_log.txt

方法二:使用Python程序

如果你使用的是Windows系统,或者不想使用命令行,也可以使用Python程序实现日志的合并。代码示例如下:

# 将log1.txt和log2.txt合并到merged_log.txt
file_list = ["log1.txt", "log2.txt"]
with open("merged_log.txt", "wb") as f:
    for file_name in file_list:
        with open(file_name, "rb") as log_file:
            f.write(log_file.read())

示例说明

示例一

假设有两个SAE日志下载链接,分别是https://applogs.xxx.com/logs?log=10.60.24.23/xxxxxx/20191209.loghttps://applogs.xxx.com/logs?log=10.60.24.23/xxxxxx/20191210.log,将两个日志合并成一个文件的Python代码如下:

import requests

# 下载日志1
url1 = "https://applogs.xxx.com/logs?log=10.60.24.23/xxxxxx/20191209.log"
response1 = requests.get(url1)
with open("log1.txt", "wb") as f:
    f.write(response1.content)

# 下载日志2
url2 = "https://applogs.xxx.com/logs?log=10.60.24.23/xxxxxx/20191210.log"
response2 = requests.get(url2)
with open("log2.txt", "wb") as f:
    f.write(response2.content)

# 合并日志
file_list = ["log1.txt", "log2.txt"]
with open("merged_log.txt", "wb") as f:
    for file_name in file_list:
        with open(file_name, "rb") as log_file:
            f.write(log_file.read())

运行以上代码后,会在当前目录下生成一个名为merged_log.txt的文件,其中包含下载下来的两个日志的内容。

示例二

假设有一个应用在SAE上运行了一段时间,需要将其所有日志下载并合并成一个文件进行整理。以下是一个Python脚本的示例代码:

import requests
from bs4 import BeautifulSoup

app_name = "xxx"  # 应用名称
sae_session_id = "xxx"  # SAE管理后台的session id,可在浏览器cookie中查看

# 获取应用的所有日志下载链接
url = "https://sae.sina.com.cn/?m=console&act=logsMain&app_id={}&appname={}".format(app_name, app_name)
headers = {
    "cookie": "BAYEUX_BROWSER=; SINAGLOBAL=xxx; SGUID=xxx; un=xxx; usr=xxx; user_id=xxx; core_un=xxx; "
              "SUP=xxx; WEB4=xxx; WEB2=xxx; lidarV=xxx; UOR=xxx; "
              "STOKEN=xxx; lxlrttp=xxx; "
              "LOGIN_IV=xxx; LOGIN_WAY=xxx; keepLogin=on; "
              "GUEST_LOGIN=xxx; guest_id=xxx; "
              "SUE=xxx; SUP_CNZZ=xxx; sso_info=xxx; "
              "sso_uid=xxx; sso_sid=xxx; SAE_SESSION_ID={}".format(sae_session_id),
    "referer": "https://sae.sina.com.cn/?m=console&app_id={}&appname={}&act=logsMain".format(app_name, app_name)
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "lxml")
links = soup.select(".zzspn a")

# 下载并合并日志
file_list = []
for link in links:
    url = "https://sae.sina.com.cn/" + link["href"]
    response = requests.get(url, headers=headers)
    file_name = "log_"+link.text.strip().replace("/", "_") + ".txt"
    with open(file_name, "wb") as f:
        f.write(response.content)
    file_list.append(file_name)

with open("merged_log.txt", "wb") as f:
    for file_name in file_list:
        with open(file_name, "rb") as log_file:
            f.write(log_file.read())

运行以上代码后,会在当前目录下生成一个名为merged_log.txt的文件,其中包含下载下来的所有日志的内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python脚本实现下载合并SAE日志 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python进度条tqdm的用法详解

    Python进度条tqdm的用法详解 简介 Python中的tqdm是一个用于显示进度条的库,可以方便地在循环时显示任务的进度条,使代码更加美观而又直观。 tqdm 默认情况下可以显示进度条、已完成的百分比、已完成的任务数量、预计剩余时间等信息。 安装 通过pip安装tqdm库: pip install tqdm 基本用法 使用tqdm最基本的用法是通过包裹…

    python 2023年6月2日
    00
  • Python异常 ValueError的问题

    Python异常ValueError的问题攻略 在Python编程中,我们经常会遇到ValueError异常。这个异常通常是由于传递给函数的参数类型不正确或参数值不在函数预期范内引起的。本攻略将介绍如何解决ValueError异常,并提供两个示例。 解决方法 在解决ValueError异常,我们可以尝试以下方法: 检查参数类型和值 使用try-except语…

    python 2023年5月13日
    00
  • Python+radar实现随机日期时间的生成

    现在我来详细讲解“Python+radar实现随机日期时间的生成”的完整攻略。 简介 在数据分析和处理中,随机日期时间的生成是一项非常常见的需求。Python有一个叫做radar的库,可以轻易地实现这一需求。radar库不仅可以生成任意范围内的随机时间,还可以自定义生成时间的分布,非常方便。 以下是实现随机日期时间生成的完整攻略: Step 1: 安装rad…

    python 2023年6月2日
    00
  • python中flatten()函数用法详解

    当然,我很乐意为您提供“Python中flatten()函数用法详解”的完整攻略。以下是详细的步骤和示例: flatten()函数 在Python中,flatten函数用于将嵌套的列表元组展开为一维列表。flatten()函数可以递归地展开嵌套的列表或元组,直到嵌套的列表或元组都被开为一维列表。 语法 flatten(lst, ltypes=(list, t…

    python 2023年5月13日
    00
  • python微信跳一跳系列之自动计算跳一跳距离

    下面是“Python微信跳一跳系列之自动计算跳一跳距离”的完整攻略。 简介 可能大家都玩过微信跳一跳游戏,在这个游戏中,我们需要让跳跃的小人跳跃到合适的位置,让他落在方块上,以此获得分数。这个游戏看似简单,但真正掌握技巧和实现高分却并不容易。 而自动计算跳一跳距离,则是为了让玩家在支付宝或者微信中能够轻松获得高分,这就需要使用Python来实现自动计算。 在…

    python 2023年6月3日
    00
  • 如何用 Python 子进程关闭 Excel 自动化中的弹窗

    当使用 Python 自动化执行 Excel 操作时,很可能会遇到 Excel 弹出窗口的情况。这些弹窗可能会干扰程序的正常流程,例如,弹出“是否保存更改”的窗口。为了避免这个问题,可以使用 Python 建立子进程来控制 Excel,当弹窗出现时,立刻关闭子进程。 下面,让我们详细讲解“如何用 Python 子进程关闭 Excel 自动化中的弹窗”的完整攻…

    python 2023年6月13日
    00
  • 利用Python和OpenCV库将URL转换为OpenCV格式的方法

    首先,将URL转换为OpenCV格式需要经历以下过程: 使用Python的requests库从URL获取数据; 将获取到的数据进行解码; 将解码得到的数据转换为OpenCV格式。 下面是具体的步骤和示例说明: 步骤一:使用Python的requests库从URL获取数据 在Python中,可以通过requests库来发送HTTP请求,从而获取到URL对应资源…

    python 2023年6月3日
    00
  • Python虚拟机栈帧对象及获取源码学习

    Python虚拟机栈帧对象及获取源码学习 在Python中,每个函数调用都会创建一个栈帧对象,用于存储函数的局部变量、参数、返回值等信息。本文详细介绍Python虚拟机栈帧及获取源码的学方法。 Python虚拟机栈帧对象 Python虚拟机栈帧对象是一个用于存储函数调用信息的数据构,它包含了函数局部变量、参数、返回值等信息。在Python中,每个函数调都会创…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部