使用loguru打印你的日志

简介

loguru是一个开箱即用的python日志模块,相比于自带的logging模块更加的简单和方便

helloworld

相比于自带的logging模块,loguru可以直接使用,不需要做很多的配置,比如下面

1
2
3
from loguru import logger

logger.info("hello world")

默认就输出下面的格式

2022-05-11 14:16:24.659 | INFO | __main__:<module>:3 - hello world

当然你也可以配置日志输出的格式,级别,颜色,添加handle,过滤等,所有的操作都在一个add函数中处理

所以add函数在loguru中很重要,下面解释下loguru中add函数的一些参数

  • sink sink是一个比较重要的参数,可以传入文件对象,也可以传入一个字符串,也就是文件路径,还可以传入logging的handler,这个就是负责接收格式化之后的日志,如果是文件的话就直接写入文件了

比如下面这个例子

1
2
3
4
5
6
7
8
9
from loguru import logger
import sys


logger.add(sys.stdout,level="ERROR")
logger.info("i am in stdout ")
logger.remove()
logger.add("log.txt")
logger.info("i am in txt")

然后下面是输出

1
2
3
4
[[email protected] loguru]# python3 -d main.py -d
2022-05-11 15:08:35.340 | INFO     | __main__:<module>:6 - i am in stdout 
[[email protected] loguru]# cat log.txt 
2022-05-11 15:08:35.346 | INFO     | __main__:<module>:9 - i am in txt
  • level 当然你肯定也可以定义日志级别
  • format 定义日志的格式
  • filter 过滤器
  • rotation 定义怎么切割日志比如5s切割一次日志

比如

logger.add("file-{time}.txt",level="ERROR",rotation="1MB")

文件大于1M的时候切割日志

或者

logger.add("file-{time}.txt",level="ERROR",rotation="00:00")

00:00点的时候切割日志

  • compression 压缩,一般切割完成之后就需要压缩,比如

logger.add("file-{time}.txt",level="ERROR",rotation="1MB",compression="zip")

除了add函数,还有一个比较重要的函数是remove,remove就是移除之前添加的处理程序并且停止向sink发送日志

比如下面这个例子

1
2
3
4
5
6
7
8
9
from loguru import logger
import sys


logger.add(sys.stdout,level="ERROR")
logger.info("i am in stdout ")
logger.remove()
logger.add("log.txt")
logger.info("i am in txt")

欢迎关注我的博客 www.bboy.app

Have Fun