目录
  1. 模块简介
  2. 安装模块
  3. 代码封装
    1. 代码
    2. 输出结果
  4. 功能说明
    1. 时间模块: TimedRotatingFileHandler
    2. 颜色终端: ColorizedStderrHandler
【模块】Logbook:logging的高级封装版

模块简介

安装模块

1
pip install logbook

代码封装

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

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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}论")

输出结果

1
2
3
4
5
6
7
8
9
10
[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论

功能说明

时间模块: TimedRotatingFileHandler

  • 该程序会根据自定义名称当前日期,组合成为文件名。
  • 例如: filename='/var/log/foo.log',date_format='%Y-%m-%d' ,那么其文件名为 /var/log/foo-2010-01-10.log

颜色终端: ColorizedStderrHandler

  • 会在输出给终端的日志信息中,显示颜色;Windows貌似无效。
文章作者: Haibei
文章链接: http://www.haibei.online/posts/1807817678.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Haibei的博客
打赏
  • 微信
  • 支付宝

评论