Logbook模块:logging的高级封装版

模块简介

安装模块

pip install logbook

代码封装

目前仅封装了文件日志输出和控制台日志输出,可以自定义打印格式。

代码
from pathlib2 import Path
import logbook
from logbook import Logger, TimedRotatingFileHandler
from logbook.more import ColorizedStderrHandler


class Log(object):
    format_string = "[{record.time}] [{record.level_name} : {record.channel}]  {record.message}"

    def __init__(self, name="Logging", file_path=None):
        self.name = name
        self._file_path = file_path
        self.logger = None

    @property
    def file_handler(self):
        self._file_path = Path(self._file_path)
        if "." not in self._file_path.name:
            self._file_path = self._file_path.joinpath("Log.log")
        self._file_path.parent.mkdir(exist_ok=True)
        _log = TimedRotatingFileHandler(str(self._file_path), date_format='%Y-%m-%d', bubble=True, encoding='utf-8')
        _log.format_string = self.format_string
        return _log

    @file_handler.setter
    def file_handler(self, file_path):
        self._file_path = file_path

    @property
    def std_handler(self):
        _log = ColorizedStderrHandler(bubble=True)
        _log.format_string = self.format_string
        return _log

    def init(self):
        logbook.set_datetime_format("local")
        self.logger = Logger(self.name)
        self.logger.handlers = []
        self.logger.handlers.append(self.std_handler)
        if self._file_path is not None:
            self.logger.handlers.append(self.file_handler)

    def __getattr__(self, item):
        return getattr(self.logger, item)


if __name__ == '__main__':
    log = Log(name="OMG", file_path="Log/abc.log")
    log.init()
    for i in range(100):
        log.info(f"当前为第{i}论")

输出结果
[2019-09-04 11:16:11.281424] [INFO : OMG]  当前为第0论
[2019-09-04 11:16:11.281618] [INFO : OMG]  当前为第1论
[2019-09-04 11:16:11.281695] [INFO : OMG]  当前为第2论
[2019-09-04 11:16:11.281760] [INFO : OMG]  当前为第3论
[2019-09-04 11:16:11.281820] [INFO : OMG]  当前为第4论
[2019-09-04 11:16:11.281877] [INFO : OMG]  当前为第5论
[2019-09-04 11:16:11.281933] [INFO : OMG]  当前为第6论
[2019-09-04 11:16:11.281988] [INFO : OMG]  当前为第7论
[2019-09-04 11:16:11.282043] [INFO : OMG]  当前为第8论
[2019-09-04 11:16:11.282098] [INFO : OMG]  当前为第9论

功能说明

1. TimedRotatingFileHandler
  • 该程序会根据自定义名称当前日期,组合成为文件名。
  • 例如:filename='/var/log/foo.log',date_format='%Y-%m-%d' ,那么其文件名为/var/log/foo-2010-01-10.log
2. ColorizedStderrHandler
  • 会在输出给终端的日志信息中,显示颜色;Windows貌似无效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值