往往在很多时候代码跑着跑着就出现BUG了,那么我们怎样能及时发现BUG及修复BUG呢?

log日志是发现BUG的及检查BUG的重要文件,今天给大家介绍一下如何利用企业微信实时的进行错误log日志的收集:

第一步 注册企业微信

用企业微信接受通知,当然就需要成为企业微信的一员啦,创建自己的企业,企业微信注册地址 注册好以后让我们进入企业微信

第二步 注册应用,获得corpid corpsecret

如下图,注册完微信以后会得到一个企业ID

python 怎么抓取自己企业微信文档的内容 企业微信抓取微信消息_log日志收集


选择应用与小程序新建一个应用,进入应用详情可获取scret

python 怎么抓取自己企业微信文档的内容 企业微信抓取微信消息_python_02


准备工作差不多了,下面进行业务逻辑代码编写

第三步 调用企业微信API进行log收集

企业微信API链接 调用API之前需要获取一个token

def get_token(self):
        """
        根据API获取token
        corpid: 获取到的企业ID
        corpsecret:应用的secret
        """
        url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
        values = {
            'corpid': self.corpid,
            'corpsecret': self.corpsecret,
        }
        req = requests.post(url, params=values)
        data = json.loads(req.text)
        return data["access_token"]

得到token后进行企业微信消息发送啦

def send_msg(self, msg):
        """
        调用企业微信发送信息API, 参考链接 https://work.weixin.qq.com/api/doc#10167
        参考链接上有详细的参数说明
        touser: 默认为@all
        agentid: 创建应用时的 agentid
        msg: 程序报错时需要报警提示,在爬虫程序中传递过来
        需要在所创建的应用中设置可见范围,可自己创建群组
        在程序中调用方式 WechatNotice().send_msg(msg)
        """
        url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.get_token()
        data = {
            "touser": "@all",
            "msgtype": "text",
            "agentid": 1000002,
            "text": {
                "content": msg
            },
            "safe": 0
        }
        try:
            res = requests.post(url, json.dumps(data))
            result = json.loads(res.content.decode())
            if result["errmsg"] != "ok":
                self.log_manage()
                logging.error(result)
        except Exception as e:
            self.log_manage()
            logging.error(e)

详细说明一下,这边我有自己封装好一个log_manage(),可在企业微信的同时,本地也进行一份log日志存储,在你的业务处理中调用send_msg(msg)即可进行代码错误信息通知,msg为 error

def log_manage(self):
        """
        log日志管理
        log_path 需要自己新建一个logs文件夹
        """
        rq = time.strftime('%Y%m%d', time.localtime(time.time()))
        log_path = os.path.dirname(os.getcwd() + '/logs/')
        logging.basicConfig(level=logging.DEBUG,  # 控制台打印的日志级别
                            filename=log_path + rq + '.log',
                            filemode='a',  # 模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
                            # a是追加模式,默认如果不写的话,就是追加模式
                            format=
                            '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                            # 日志格式
                            )
总结