python logging模块函数封装使用

引言
  • 最近涉及到了使用logging模块来记录一些运行日志
  • 封装了一个简单的类,将运行日志打印到console的同时,也输出到对应的文件中
  • 便于自己使用,大家也可以使用
封装后代码
import logging

class Logger(object):
    level_relations = {
        'debug': logging.DEBUG,
        'info': logging.INFO,
        'warning': logging.WARNING,
        'error': logging.ERROR,
        'critical': logging.CRITICAL
    }

    def __init__(self, file_name, level='info',
                 fmt='%(asctime)s - %(levelname)s: %(message)s'):
        self.logger = logging.getLogger(file_name)
        self.file_name = file_name

        # 设置日志格式
        self.format_str = logging.Formatter(fmt)

        # 设置日志级别
        self.logger.setLevel(self.level_relations.get(level))

    def output_console(self):
        # 往屏幕上输出
        sh = logging.StreamHandler()
        sh.setFormatter(self.format_str)
        self.logger.addHandler(sh)
        return sh

    def output_file(self):
        # 将日志写到文件里面
        th = logging.FileHandler(self.file_name,
                                 encoding='utf-8')
        th.setFormatter(self.format_str)
        self.logger.addHandler(th)
        return th

    def remove_handler(self, handler):
        self.logger.removeHandler(handler)

    def __call__(self, message):
        sh = self.output_console()
        th = self.output_file()

        self.logger.info(message)

        self.remove_handler(sh)
        self.remove_handler(th)


if __name__ == '__main__':
    log = Logger('all.log', level='debug')
    for i in range(10):
        log(f'EPOCH {i}: loss:{i*0.1}, acc:{i}')
# 输出结果:
2019-10-25 08:55:06,024 - INFO: EPOCH 0: loss:0.0, acc:0
2019-10-25 08:55:06,024 - INFO: EPOCH 1: loss:0.1, acc:1
2019-10-25 08:55:06,024 - INFO: EPOCH 2: loss:0.2, acc:2
2019-10-25 08:55:06,024 - INFO: EPOCH 3: loss:0.30000000000000004, acc:3
2019-10-25 08:55:06,024 - INFO: EPOCH 4: loss:0.4, acc:4
2019-10-25 08:55:06,024 - INFO: EPOCH 5: loss:0.5, acc:5
2019-10-25 08:55:06,024 - INFO: EPOCH 6: loss:0.6000000000000001, acc:6
2019-10-25 08:55:06,024 - INFO: EPOCH 7: loss:0.7000000000000001, acc:7
2019-10-25 08:55:06,024 - INFO: EPOCH 8: loss:0.8, acc:8
2019-10-25 08:55:06,024 - INFO: EPOCH 9: loss:0.9, acc:9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值