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.log
和https://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技术站