logzero—让python日志输出更简单容易的模块

coolpython

共 2827字,需浏览 6分钟

 · 2021-10-27

logzero是python的一个日志模块,它让日志输出更加的便捷,使用起来更加高效,而且提供了一些特别小巧且实用的功能,极大的方便了在项目里处理日志,使用pip安装


pip install logzero

下面详细介绍logzero的用法

1. 在终端根据日志级别输出带有颜色的日志

在终端输出日志时,logzero可以根据日志的级别显示不同的颜色,方便在查看日志时区分

from logzero import logger

logger.debug("hello")
logger.info("info")
logger.warning("warn")
logger.error("error")

终端显示 

2. 输出异常信

程序在捕获异常后,如果想在日志里输出详细的异常信息,通常使用traceback模块的format_exc方法来获取异常信息,然后在日志中输出,使用logzero后,就可以省去format_exc方法的调用过程,一步到位,节省了代码

try:
raise Exception("this is a demo exception")
except Exception as e:
logger.exception(e)

logzero 提供了一个exception方法,可以输出Exception对象的详细信息 

是不是特别方便呢

3. 输出json格式的日志

使用logzero,可以快速的输出json格式的日志

import logzero
from logzero import logger

logzero.json() # 输出json格式日志

def test():
logger.info("json格式")

test()

日志内容

{
"asctime": "2021-10-18 21:19:41,312",
"filename": "hello_world.py",
"funcName": "test",
"levelname": "INFO",
"levelno": 20,
"lineno": 7,
"module": "hello_world",
"message": "json格式",
"name": "logzero_default",
"pathname": "/Users/kwsy/PycharmProjects/class21/basic/hello_world.py",
"process": 64653,
"processName": "MainProcess",
"threadName": "MainThread"
}

日志中的字段是模块默认的,你可以调用formatter函数重新调整这些字段。使用json方法,是为默认的logger开启json格式,此外还可以使用setup_logger(json=True)方法,为你自定义的logger开启json格式日志输出

import logzero
from logzero import logger, setup_logger


mylogger = setup_logger(json=True) # 自定义的logger
mylogger.info("info")

logger.info("默认logger")

自定义的mylogger是按照json格式输出日志,而默认的logger则使用默认格式。

4. 更方便的输出到文件中

import logzero
from logzero import logger

logzero.logfile('./main.log', disableStderrLogger=True)
logger.info("info")

调用logfile函数,可以指定日志输出的文件,disableStderrLogger设置为True,日志就不会在终端里输出了。上面的示例是为默认logger设置输出文件,下面给一个自定义logger的例子

import logzero
from logzero import logger, setup_logger

sys_logger = setup_logger(name='sys', logfile='./sys.log', level=logzero.INFO, disableStderrLogger=True)
user_logger = setup_logger(name='user', logfile='./user.log', level=logzero.INFO, disableStderrLogger=True)


user_logger.info('user info')
user_logger.warn('user warn')
user_logger.error('user error')

sys_logger.info('sys info')
sys_logger.warn('sys warn')
sys_logger.error('sys error')

上面的代码会生成两个日志文件,level设置为INFO,按照DEBUG < INFO < WARNING < ERROR < CRITICAL的顺序,只有大于等于INFO的日志才会被输出。

5. 生成rotating 日志

一旦指定了logfile参数,创建的handler就是RotatingFileHandler类型的,但需要设置maxBytes参数,否则不会滚动输出。

import logzero
from logzero import logger, setup_logger


user_logger = setup_logger(name='user', logfile='./user.log',
level=logzero.INFO, fileLoglevel=logzero.WARN,
disableStderrLogger=True, maxBytes=60000, backupCount=3)


user_logger.info('user info')
user_logger.warn('user warn')
user_logger.error('user error')

maxBytes 设置文件大小,backupCount设置保留文件个数,其余的将会被删除。


浏览 69
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报