欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python記錄日志報(bào)警詳解

 更新時(shí)間:2025年07月18日 09:09:24   作者:Tipriest_  
Python日志報(bào)警方案包括簡(jiǎn)單日志、郵件(需SMTP)、Slack(需requests)、桌面彈窗(需plyer),推薦基礎(chǔ)方案用于本地開(kāi)發(fā),多通道組合提升可靠性,異步處理避免阻塞,敏感信息加密存儲(chǔ),根據(jù)場(chǎng)景選擇,建議至少實(shí)現(xiàn)日志告警+主動(dòng)通知方式

在 Python 標(biāo)準(zhǔn)庫(kù)中,可以列舉出如下常見(jiàn)場(chǎng)景日志報(bào)警解決方案:

方案 1:簡(jiǎn)單日志告警(推薦基礎(chǔ)方案)

import logging

def send_alert(message):
    logging.error(f"ALERT: {message}")
    # 可擴(kuò)展:同時(shí)寫入文件/發(fā)送到日志服務(wù)器

# 配置日志格式
logging.basicConfig(
    level=logging.ERROR,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

? 無(wú)需額外安裝包,適合本地開(kāi)發(fā)或簡(jiǎn)單場(chǎng)景

方案 2:郵件告警(需 SMTP 服務(wù))

import smtplib
from email.mime.text import MIMEText
from os import getenv

def send_alert(message):
    msg = MIMEText(message)
    msg["Subject"] = "API Key 異常告警"
    msg["From"] = getenv("ALERT_EMAIL_FROM")  # 從.env讀取
    msg["To"] = getenv("ALERT_EMAIL_TO")

    with smtplib.SMTP_SSL(getenv("SMTP_SERVER"), 465) as server:
        server.login(getenv("SMTP_USER"), getenv("SMTP_PASSWORD"))
        server.send_message(msg)

依賴包:Python 內(nèi)置 smtplib + email

需在 .env 中配置:

SMTP_SERVER=smtp.example.com
SMTP_USER=alert@example.com
SMTP_PASSWORD=your_email_password
ALERT_EMAIL_FROM=alert@example.com
ALERT_EMAIL_TO=devops@example.com

方案 3:Slack 通知(推薦團(tuán)隊(duì)協(xié)作)

import requests
from os import getenv

def send_alert(message):
    webhook_url = getenv("SLACK_WEBHOOK_URL")
    payload = {"text": f"?? 告警: {message}"}
    requests.post(webhook_url, json=payload)

依賴包:需安裝 requests

配置步驟

  • 在 Slack 創(chuàng)建 Incoming Webhook
  • .env 添加:
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXXX/YYYY

方案 4:桌面彈窗通知(適合本地開(kāi)發(fā))

from plyer import notification
import sys

def send_alert(message):
    if sys.platform in ["win32", "darwin", "linux"]:
        notification.notify(
            title="密鑰異常",
            message=message,
            app_icon=None,
            timeout=10
        )

依賴包:需安裝 plyer

pip install plyer

最佳實(shí)踐建議

多通道組合

def send_alert(message):
    logging.error(message)          # 基礎(chǔ)日志
    send_to_slack_async(message)    # 異步非阻塞通知團(tuán)隊(duì)

異步處理

使用 threading 避免阻塞主程序:

import threading

def async_alert(message):
    threading.Thread(target=send_alert, args=(message,)).start()

敏感信息加密

對(duì)郵件/Slack 的憑據(jù)使用加密存儲(chǔ):

from cryptography.fernet import Fernet

# 加密
cipher = Fernet(key)
encrypted = cipher.encrypt(b"secret_password")
# 解密
cipher.decrypt(encrypted)

完整示例代碼

import os
import logging
from dotenv import load_dotenv
from threading import Thread
import requests

# 加載環(huán)境變量
load_dotenv()

# 配置日志
logging.basicConfig(
    level=logging.ERROR,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

def send_alert(message):
    """多通道告警"""
    # 1. 本地日志
    logging.error(message)
    
    # 2. 異步Slack通知
    def _slack_alert(msg):
        try:
            webhook = os.getenv("SLACK_WEBHOOK")
            requests.post(webhook, json={"text": msg}, timeout=3)
        except Exception as e:
            logging.error(f"Slack通知失敗: {str(e)}")
    
    Thread(target=_slack_alert, args=(message,)).start()

# 使用示例
try:
    api_key = os.environ["API_KEY"]
except KeyError:
    send_alert("API_KEY 缺失!立即更新.env文件!")

選擇依據(jù)

方案適用場(chǎng)景可靠性復(fù)雜度
日志開(kāi)發(fā)環(huán)境/簡(jiǎn)單生產(chǎn)環(huán)境
郵件需要郵件通知的生產(chǎn)環(huán)境
Slack團(tuán)隊(duì)協(xié)作環(huán)境
桌面彈窗本地開(kāi)發(fā)環(huán)境
組合方案關(guān)鍵業(yè)務(wù)系統(tǒng)最高

根據(jù)實(shí)際需求選擇,建議至少實(shí)現(xiàn)日志告警 + 一種主動(dòng)通知方式。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python4種配色方案詳解(適合科研的配色)

    Python4種配色方案詳解(適合科研的配色)

    配色的選擇是在我們論文文章畫圖過(guò)程中經(jīng)常面臨的一個(gè)問(wèn)題,下面這篇文章主要介紹了Python4種配色方案的相關(guān)資料,感興趣的朋友一起看看吧
    2020-02-02
  • python 裝飾器的使用與要點(diǎn)

    python 裝飾器的使用與要點(diǎn)

    python的裝飾器本質(zhì)上是一個(gè)Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動(dòng)的前提下增加額外功能;裝飾器的返回值也是一個(gè)函數(shù)對(duì)象。簡(jiǎn)單的說(shuō)裝飾器就是一個(gè)用來(lái)返回函數(shù)的函數(shù)
    2021-05-05
  • python3.x中安裝web.py步驟方法

    python3.x中安裝web.py步驟方法

    在本篇文章里小編給大家分享的是關(guān)于python3.x中安裝web.py步驟方法,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python Grid使用和布局詳解

    Python Grid使用和布局詳解

    這篇文章主要為大家詳細(xì)介紹了Python Grid使用和布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python中zip函數(shù)如何使用

    Python中zip函數(shù)如何使用

    在本篇文章里小編給大家分享的是關(guān)于Python中的zip函數(shù)用法,需要的朋友們可以學(xué)習(xí)參考下。
    2020-06-06
  • 一個(gè)超級(jí)簡(jiǎn)單的python web程序

    一個(gè)超級(jí)簡(jiǎn)單的python web程序

    這篇文章主要介紹了一個(gè)超級(jí)簡(jiǎn)單的python web程序,需要的朋友可以參考下
    2014-09-09
  • 在Python的Flask中使用WTForms表單框架的基礎(chǔ)教程

    在Python的Flask中使用WTForms表單框架的基礎(chǔ)教程

    WTForms由Python寫成,為表單而生,提供了很多制作Web表單的實(shí)用API,和Flask框架結(jié)合使用效果拔群,這里我們就一起看一下在Python的Flask中使用WTForms表單框架的基礎(chǔ)教程
    2016-06-06
  • 使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程

    使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程

    今天小編就為大家分享一篇使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python實(shí)現(xiàn)兩字符串映射

    python實(shí)現(xiàn)兩字符串映射

    這篇文章主要介紹了python實(shí)現(xiàn)兩字符串映射方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 詳解Python中神奇的字符串駐留機(jī)制

    詳解Python中神奇的字符串駐留機(jī)制

    字符串駐留機(jī)制是Python針對(duì)字符串對(duì)象采取的一種內(nèi)存優(yōu)化技術(shù)。其目標(biāo)是減少內(nèi)存使用并提高程序的性能。這篇文章主要介紹了字符串駐留機(jī)制的簡(jiǎn)單應(yīng)用,需要的可以參考一下
    2023-04-04

最新評(píng)論