通用技术 Python 中的日志库 logzero

codeskyblue · 2018年02月01日 · 最后由 thanksdanny 回复于 2018年02月01日 · 2266 次阅读

历史

有个很奇怪的现象,Python已经发展了10几年了,系统库虽然功能强大,但是出奇的难用。比如说urllib、urllib2库。好在总是会有变革之士,挺身而出,用键盘做武器,创造出无数出名的库,比如requests库一出世,一个照面就将urllib和urllib2这两大资深系统库瞬秒。我这次向大家介绍的是另外一个可以瞬秒logging库的日志库logzero。

谷歌搜索python log,清一色的都是介绍logging模块的,可是这个库实在是难用。我举几个例子

import logging
logging.info("Hello")

结果是什么输出都没有

import logging
logging.warn("warn")
# 输出: WARNING:root:warn

这次是有输出了,但是这个简洁的输出,有个毛线用处,跟直接print("warn")有什么区别

除非你掌握了logging中非常高深的技巧,否则根本玩不转这个库

import logging
logging.basicConfig(
format='%(asctime)s %(levelname)-8s %(message)s',
level=logging.INFO,
datefmt='%Y-%m-%d %H:%M:%S')
logging.info("an info message")
# 输出: 2018-02-01 13:22:21 INFO an info message

还有更复杂的方法我就不写了。下面说下logzero的用法

PS: 本来想自己写个库来着,还好我没放弃寻找,终于被我找到了

logzero的使用

用起来简单的库,文档写起来也容易。logzero就是属于这种级别的库。

安装

pip install -U logzero

使用

from logzero import logger

# These log messages are sent to the console
logger.debug("hello %s", "world")
logger.info("info")
logger.warning("warn")
logger.error("error")

# This is how you'd log an exception
try:
raise Exception("this is a demo exception")
except Exception as e:
logger.exception(e)

如果文件名是demo.py,输出将会是下图

输出还有颜色,文件+行号。比logging默认的输出不知道强了多少条街道。

还有一些更高级的用法

日志切割

import logzero
from logzero import logger

# Setup rotating logfile with 3 rotations, each with a maximum filesize of 1MB:
logzero.logfile("/tmp/rotating-logfile.log", maxBytes=1e6, backupCount=3)

# Log messages
logger.info("This log message goes to the console and the logfile")

设置全局日志Level

import logzero
import logging
from logzero import logger

logzero.loglevel(logging.INFO)
logger.debug("hello") # 不显示
logger.info("info") # 显示

定制日志实例

from logzero import setup_logger
logger1 = setup_logger(name="mylogger1", logfile="/tmp/test-logger1.log", level=logging.INFO)
logger2 = setup_logger(name="mylogger2", logfile="/tmp/test-logger2.log", level=logging.INFO)

# By default, logging
logger1.info("info for logger 1")
logger2.info("info for logger 2")

更多

还有更多的内容等着去发现。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

目前项目在用logbook,好像功能 比logzero 更强大点。😀

0x7C00 回复

看起来挺牛逼的样子呀 http://logbook.readthedocs.io

所以python一直在进步

正想换个日志的,今晚试试先哈哈

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
simple [精彩盘点] TesterHome 社区 2018年 度精华帖 中提及了此贴 01月07日 12:08
codeskyblue 专栏文章:2018年 终总结 中提及了此贴 02月18日 10:26
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册