通过生成器写一个日志调用方法

本文介绍了一种使用Python协程实现的日志记录系统,该系统可以将消息同时输出到控制台和文件中,适用于需要实时监控和持久化日志的应用场景。

要求:

 

 

代码:

import logging


def logging_data(filename, channel='terminal'):
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)

    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)

    fh = logging.FileHandler(filename)
    fh.setLevel(logging.DEBUG)

    formatter = logging.Formatter('%(asctime)s %(message)s')

    ch.setFormatter(formatter)
    fh.setFormatter(formatter)
    count = 0
    while True:
        count += 1
        msg = yield count
        if msg and channel == 'terminal':
            logger.addHandler(ch)
            logger.info('[{0}] {1}'.format(count, msg))
        elif msg and channel == 'file':
            logger.addHandler(fh)
            logger.info('[{0}] {1}'.format(count, msg))
        elif msg and channel == 'both':
            logger.addHandler(ch)
            logger.addHandler(fh)
            logger.info('[{0}] {1}'.format(count, msg))
        else:
            exit('输入不合法')


log_obj = logging_data('web.db', 'both')

next(log_obj)
log_obj.send('user alex login success')
log_obj.send('user wusir login success')
log_obj.send('user haifeng login success')

 

 

转载于:https://www.cnblogs.com/lshedward/p/10053201.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值