logzero—让python日志输出更简单容易的模块
共 2827字,需浏览 6分钟
·
2021-10-27 17:58
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设置保留文件个数,其余的将会被删除。