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

[TOC]
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设置保留文件个数,其余的将会被删除。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案