1. 程式人生 > >Python進階_wxpy學習:用微信監控你的程式

Python進階_wxpy學習:用微信監控你的程式

目錄:

前言

學習完了python的基本概念和相應操作後,就要進入實戰階段了,首先選的和微信埠自動互動的wxpy。
本文操靠wxpy的官方文件:官方文件
機器人物件可以參考前文:機器人物件
聊天物件可以參考前文:聊天物件
訊息處理可以參考前文:訊息處理

用微信監控你的程式

通過利用微信強大的通知能力,我們可以把程式中的警告/日誌發到自己的微信上。

wxpy 提供以下兩種方式來實現這個需求。

獲得專用 Logger

wxpy.get_wechat_logger(receiver=None, name=None, level=30)[原始碼]

獲得一個可向指定微信聊天物件傳送日誌的 Logger

引數:
•receiver – ◦當為 None, True 或字串時,將以該值作為 cache_path 引數啟動一個新的機器人,併發送到該機器人的”檔案傳輸助手”
◦當為 機器人 時,將傳送到該機器人的”檔案傳輸助手”
◦當為 聊天物件 時,將傳送到該聊天物件

•name – Logger 名稱
•level – Logger 等級,預設為 logging.WARNING


返回:

Logger
from wxpy import get_wechat_logger

# 獲得一個專用 Logger
# 當不設定 `receiver` 時,會將日誌傳送到隨後掃碼登陸的微信的"檔案傳輸助手"
logger = get_wechat_logger() # 傳送警告 logger.warning('這是一條 WARNING 等級的日誌,你收到了嗎?') # 接收捕獲的異常 try: 1 / 0 except: logger.exception('現在你又收到了什麼?')

加入到現有的 Logger

class wxpy.WeChatLoggingHandler(receiver=None)[原始碼]

可向指定微信聊天物件傳送日誌的 Logging Handler

引數:
receiver – •當為 None, True 或字串時,將以該值作為 cache_path 引數啟動一個新的機器人,併發送到該機器人的”檔案傳輸助手”
•當為 機器人 時,將傳送到該機器人的”檔案傳輸助手”
•當為 聊天物件 時,將傳送到該聊天物件

import logging
from wxpy import WeChatLoggingHandler

# 這是你現有的 Logger
logger = logging.getLogger(__name__)

# 初始化一個微信 Handler
wechat_handler = WeChatLoggingHandler()
# 加到入現有的 Logger
logger.addHandler(wechat_handler)

logger.warning('你有一條新的告警,請查收。')

指定接收者

當然,我們也可以使用其他聊天物件來接收日誌。

比如,先在微信中建立一個群聊,並在裡面加入需要關注這些日誌的人員。然後把這個群作為接收者。

from wxpy import *

# 初始化機器人
bot = Bot()
# 找到需要接收日誌的群 -- `ensure_one()` 用於確保找到的結果是唯一的,避免發錯地方
group_receiver = ensure_one(bot.groups().search('XX業務-告警通知'))

# 指定這個群為接收者
logger = get_wechat_logger(group_receiver)

logger.error('打擾大家了,但這是一條重要的錯誤日誌...')