一款超好用的python的log记录工具——loguru
1. 安装
pip install loguru
2. 使用简介
2.1 add()函数
在loguru中,只需要通过一个add()函数即可设置Handler,设置Formatter,Filter Message,rotation,retention以及设置Level等配置项。
示例:
from loguru import logger
import sys
# 过滤出含有“filter_message”的error信心输出到系统命令行
logger.add(sys.stderr,format="{time} {level} {message}", filter="filter_message",level="ERROR")
# 过滤出含有“filter_message”的error信心输出到文件
logger.add("./test.log",format="{time} {level} {message}", filter="filter_message", level="ERROR") # 输出到文件
2.2 format设置日志输出格式
format支持的配置参数如下:
class Record(TypedDict):
elapsed: timedelta
exception: Optional[RecordException]
extra: Dict[Any, Any]
file: RecordFile
function: str
level: RecordLevel
line: int
message: str
module: str
name: Union[str, None]
process: RecordProcess
thread: RecordThread
time: datetime
代码实例如下:
from loguru import logger
import sys
logger.add(sys.stderr,format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {file}:{line} | {message}",level="INFO")
2.3 roation配置
# 根据配置文件的大小为500MB,超过会自动生成一个新日志文件
logger.add('logTest_{time}.log', rotation="500 MB")
# 设置每天零点创建一个日志文件
logger.add('logTest_{time}.log', rotation='00:00')
# 设置每隔一周创建一个日志文件
logger.add('logTest_{time}.log', rotation='1 week')
2.4 retention配置(配置日志最长保留时间)
# 配置日志文件最长保留时间为7天
logger.add('logTest_{time}.log', retention='7 days')
2.5 compression 配置(配置日志文件为压缩格式)
# 设置文件格式压缩为zip,节省空间
logger.add('logTest_{time}.log', compression='zip')
3. 示例
3.1 代码示例:
from loguru import logger
import sys
#logger.add(sys.stderr,format="{time} {level} {message}", level="ERROR") # 输出到系统命令行
#logger.add("./test.log",format="{time} {level} {message}", level="ERROR") # 输出到文件
logger.add("./test.log", level="ERROR")
def test():
for i in range(5):
logger.debug('message is %s'%i)
logger.info('message is %s'%i)
logger.warning('message is %s'%i)
logger.error('message is %s'%i)
test()
3.2 输出结果为:
3.3 在test.log中的结果(由于设置了日志输出级别ERROR):
番外篇
若用logging模块实现日志按天翻转 代码如下:
import logging
from logging.handlers import TimedRotatingFileHandler
def main():
while True:
logger.info("hahahaha")
if __name__ == "__main__":
# 设置logging日志记录
logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler("./log/hn2_event_statistics.log",
when="midnight",
interval=1,
backupCount=14)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
# 启动程序
main()