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

yizhihongxing

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 命令行参数模块argparse的实现

    在Python程序中,通常从命令行传入参数并在程序中进行处理时,我们使用sys.argv来获取命令行参数。但是这种方式有一个缺点就是难以自动进行解析和提示。Python标准库中的argparse模块提供了一种自动解析命令行参数和生成帮助信息的方式,使我们的命令行工具代码更加易读、易维护和可扩展。下面是Github仓库添加标签的命令行工具中使用了argpars…

    python 2023年6月3日
    00
  • Python Requests 基本使用及Requests与 urllib 区别

    以下是关于Python Requests基本使用及Requests与urllib区别的攻略: Python Requests基本使用及Requests与urllib区别 在Python中,Requests是一个流行的库,可以用于向Web发送HTTP请求和接响应。与urllib库相比,Requests库更加简单易用。以下是Python Requests基本使用…

    python 2023年5月14日
    00
  • Python中的变量与常量

    以下是详细讲解“Python中的变量与常量”的完整攻略,包含两个示例说明。 1. 变量 在Python中,变量是用于储数据的标识符。变量可以存储不同类型的数据,例如整数、浮点数、字符串等。在Python中,变量的值随时更改。 以下是一个使用变量的示例: x = 5 y = "Hello, World!" print(x) print(y)…

    python 2023年5月14日
    00
  • Python中使用moviepy进行视频分割的实现方法

    下面是Python中使用Moviepy进行视频分割的实现方法的详细攻略: 1.安装Moviepy Moviepy是一款基于Python的视频编辑模块,可以用来对视频进行剪辑、合成、转换、编辑、滤镜等等操作。在使用Moviepy进行视频分割前,需要首先安装该模块。 安装方式有多种,可以使用pip在命令行中安装: pip install moviepy 也可以去…

    python 2023年6月3日
    00
  • Python 异步之如何获取当前和正在运行任务详解

    Python 异步之获取当前和正在运行任务详解 在 Python 异步编程中,我们经常需要获取当前的任务以及正在运行的任务。本文将介绍如何使用 asyncio 模块和相关方法来获取这些信息。 获取当前任务 要获取当前的任务,我们可以使用 asyncio.current_task() 方法。该方法返回当前协程对象的 Task 实例。在异步中,Task 是 as…

    python 2023年5月14日
    00
  • 利用pandas合并多个excel的方法示例

    下面我将为您详细讲解如何利用pandas合并多个excel的方法示例。 1. 准备工作 在开始之前,您需要安装pandas库。可以通过以下命令来安装: pip install pandas 2. 加载数据 我们以两个文件为例,先分别加载两个文件:Data1.xlsx和Data2.xlsx。 import pandas as pd # 加载文件1 df1 = …

    python 2023年5月13日
    00
  • Django简介 安装下载 app概念 主要目录介绍

    目录 Django简介 前戏 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 一、版本问题 Django1.X: 同步 1.11 Django2.X: 同步 2.22 Django3.X: 同步 3.2 Djan…

    python 2023年4月25日
    00
  • QT布局管理详解QVBoxLayout与QHBoxLayout及QGridLayout的使用

    下面是关于“QT布局管理详解QVBoxLayout与QHBoxLayout及QGridLayout的使用”的完整攻略。 布局管理器简介 QT布局管理器是QT GUI 设计界面中最重要的一部分,用于帮助开发者处理 Widget(QWidget)之间的布局关系,控制控件在可用空间中的大小、位置、对齐方式等。 在 QT 中,布局管理器主要由 QVBoxLayout…

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