python脚本之通过阿里云sdk 获取日志保存本地xlsl文件

sdk接口获取日志信息保存到本地

from typing import List
from alibabacloud_sls20201230.client import Client as Sls20201230Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_sls20201230 import models as sls_20201230_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
from openpyxl import Workbook


class SlowLogExporter:
    def __init__(self, access_key_id, access_key_secret, region_id='cn-hangzhou'):
        self.access_key_id = access_key_id
        self.access_key_secret = access_key_secret
        self.region_id = region_id
        self.client = self.create_client()

    def create_client(self) -> Sls20201230Client:
        config = open_api_models.Config(
            read_timeout=60000,
            access_key_id=self.access_key_id,
            access_key_secret=self.access_key_secret,
        )
        config.endpoint = f"{self.region_id}.log.aliyuncs.com"
        return Sls20201230Client(config)

    def query_logs(self, project, logstore, from_, to, query) -> List[dict]:
        get_logs_request = sls_20201230_models.GetLogsRequest(
            from_=from_,
            to=to,
            query=query,
        )
        runtime = util_models.RuntimeOptions()
        headers = {}
        try:
            response = self.client.get_logs_with_options(project, logstore, get_logs_request, headers, runtime)
            logs = response.body
            if isinstance(logs, list):
                return logs
            elif isinstance(logs, dict):
                return logs.get('logs', [])
            else:
                print("返回格式不符合预期:", logs)
                return []
        except Exception as error:
            print("查询日志失败:", error)
            return []

    def write_logs_to_excel(self, logs: List[dict], file_path: str) -> None:
        workbook = Workbook()
        worksheet = workbook.active
        worksheet.title = "Log Entries"
        # 写入表头
        headers = ['path', 'total', 'min_response_time', 'avg_response_time', 'max_response_time']
        for col_idx, header in enumerate(headers, start=1):
            worksheet.cell(row=1, column=col_idx, value=header)

        # 写入日志条目
        for row_idx, log in enumerate(logs, start=2):
            for col_idx, header in enumerate(headers, start=1):
                worksheet.cell(row=row_idx, column=col_idx, value=log.get(header, ""))
        # 保存文件
        workbook.save(file_path)


if __name__ == '__main__':
    access_key_id = 'xxxxxxx'
    access_key_secret = 'xxxxxxx'
    endpoint = f'cn-xxxxxxx.log.aliyuncs.com'
    project = 'xxxxxxx'
    logstore = 'xxxxxxx'
    from_ = 1713864629
    to = 1714123838
    query = "xxxxxxx"
    exporter = SlowLogExporter(access_key_id, access_key_secret)
    logs = exporter.query_logs(project, logstore, from_, to, query)
    if logs:
        exporter.write_logs_to_excel(logs, './xlsl/xxxxx-log.xlsx')

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您将数据存储到本地的 xlsx 文件中。首先,您需要安装 `openpyxl` 库,它可以帮助我们读写 Excel 文件。您可以使用以下命令进行安装: ```bash pip install openpyxl ``` 接下来,我们需要修改 `app.py` 文件以便将数据存储到 Excel 文件中。以下是修改后的代码: ```python from flask import Flask, render_template, request, redirect, url_for import datetime import os from openpyxl import Workbook, load_workbook app = Flask(__name__) @app.route('/') def index(): history = load_history() return render_template('index.html', history=history) @app.route('/add', methods=['POST']) def add_data(): data = request.form['data'] timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') save_data(data, timestamp) return redirect(url_for('index')) def load_history(): if not os.path.exists('history.xlsx'): return [] workbook = load_workbook('history.xlsx') sheet = workbook.active history = [] for row in sheet.iter_rows(values_only=True): history.append({'data': row[0], 'timestamp': row[1]}) return history def save_data(data, timestamp): if not os.path.exists('history.xlsx'): workbook = Workbook() sheet = workbook.active sheet.append(['Data', 'Timestamp']) else: workbook = load_workbook('history.xlsx') sheet = workbook.active sheet.append([data, timestamp]) workbook.save('history.xlsx') if __name__ == '__main__': app.run(debug=True) ``` 在上面的代码中,我们使用了 `openpyxl` 库来读写 Excel 文件。我们定义了两个函数 `load_history()` 和 `save_data()`,它们分别用于加载历史数据和保存新数据到 Excel 文件中。 `load_history()` 函数首先检查是否存在名为 `history.xlsx` 的文件,如果不存在,则返回一个空列表。如果文件存在,则使用 `load_workbook()` 函数加载文件,并获取活动工作表。然后,我们使用 `iter_rows()` 函数遍历每一行,并将数据添加到 `history` 列表中。最后,我们返回 `history` 列表。 `save_data()` 函数首先检查是否存在名为 `history.xlsx` 的文件,如果不存在,则创建一个新的工作簿和工作表,并添加标题行。如果文件存在,则使用 `load_workbook()` 函数加载文件,并获取活动工作表。然后,我们使用 `append()` 函数将新数据添加到工作表的末尾。最后,我们使用 `save()` 函数保存工作簿到 `history.xlsx` 文件中。 在 `add_data()` 函数中,我们使用 `datetime.datetime.utcnow()` 函数获取当前时间,将其转换为字符串格式,并将其作为时间戳添加到 Excel 文件中。 现在,您可以运行应用程序,并使用表单向 Excel 文件中添加新数据。历史数据将从 `history.xlsx` 文件中加载,并显示在网页上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值