wxpy.ext.logging_with_wechat 源代码

# coding: utf-8
from __future__ import unicode_literals

import logging

from wxpy.utils import get_receiver

logger = logging.getLogger(__name__)


[文档]class WeChatLoggingHandler(logging.Handler): def __init__(self, receiver=None): """ 可向指定微信聊天对象发送日志的 Logging Handler :param receiver: * 当为 `None`, `True` 或字符串时,将以该值作为 `cache_path` 参数启动一个新的机器人,并发送到该机器人的"文件传输助手" * 当为 :class:`机器人 <Bot>` 时,将发送到该机器人的"文件传输助手" * 当为 :class:`聊天对象 <Chat>` 时,将发送到该聊天对象 """ super(WeChatLoggingHandler, self).__init__() self.receiver = get_receiver(receiver) def emit(self, record): if record.name.startswith('wxpy.'): # 排除 wxpy 的日志 return # noinspection PyBroadException try: self.receiver.send(self.format(record)) except: # Todo: 将异常输出到屏幕 pass
[文档]def get_wechat_logger(receiver=None, name=None, level=logging.WARNING): """ 获得一个可向指定微信聊天对象发送日志的 Logger :param receiver: * 当为 `None`, `True` 或字符串时,将以该值作为 `cache_path` 参数启动一个新的机器人,并发送到该机器人的"文件传输助手" * 当为 :class:`机器人 <Bot>` 时,将发送到该机器人的"文件传输助手" * 当为 :class:`聊天对象 <Chat>` 时,将发送到该聊天对象 :param name: Logger 名称 :param level: Logger 等级,默认为 `logging.WARNING` :return: Logger """ _logger = logging.getLogger(name=name) _logger.setLevel(level=level) _logger.addHandler(WeChatLoggingHandler(receiver=receiver)) return _logger