
本文章向大家介绍Python 第三方日志框架loguru使用,主要包括Python 第三方日志框架loguru使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
解决中文乱码问题
项目地址 github: https://github.com/Delgan/loguru
文档:https://loguru.readthedocs.io/en/stable/index.html
安装
pip install loguru
1
2
|
pip
install
loguru
|
1、输出日志
from loguru import logger logger.debug("这是一条debug日志")
1
2
3
|
from
loguru
import
logger
logger
.
debug
(
"这是一条debug日志"
)
|
终端执行后出现带颜色的日志,挺酷的
2、输出到文件
from loguru import logger logger.add("file_{time}.log") logger.debug("这是一条debug日志") logger.info("这是一条info日志")
1
2
3
4
5
6
7
|
from
loguru
import
logger
logger
.
add
(
"file_{time}.log"
)
logger
.
debug
(
"这是一条debug日志"
)
logger
.
info
(
"这是一条info日志"
)
|
目录下多出一个日志文件 :file_2019-03-14_19-53-25_661314.log
3、日志规则
设置日志格式,过滤器,日志级别
from loguru import logger logger.add("file.log", format="{time} {level} {message}", filter="", level="INFO") logger.debug("这是一条debug日志") logger.info("这是一条info日志")
1
2
3
4
5
6
7
|
from
loguru
import
logger
logger
.
add
(
"file.log"
,
format
=
"{time} {level} {message}"
,
filter
=
""
,
level
=
"INFO"
)
logger
.
debug
(
"这是一条debug日志"
)
logger
.
info
(
"这是一条info日志"
)
|
输出
2019-03-14T20:01:25.392454+0800 INFO 这是一条info日志
1
2
|
2019
-
03
-
14T20
:
01
:
25.392454
+
0800
INFO
这是一条
info日志
|
4、日志文件
文件管理方式
logger.add("file_1.log", rotation="500 MB") # 文件过大就会重新生成一个文件 logger.add("file_2.log", rotation="12:00") # 每天12点创建新文件 logger.add("file_3.log", rotation="1 week") # 文件时间过长就会创建新文件 logger.add("file_X.log", retention="10 days") # 一段时间后会清空 logger.add("file_Y.log", compression="zip") # 保存zip格式
1
2
3
4
5
6
7
8
|
logger
.
add
(
"file_1.log"
,
rotation
=
"500 MB"
)
# 文件过大就会重新生成一个文件
logger
.
add
(
"file_2.log"
,
rotation
=
"12:00"
)
# 每天12点创建新文件
logger
.
add
(
"file_3.log"
,
rotation
=
"1 week"
)
# 文件时间过长就会创建新文件
logger
.
add
(
"file_X.log"
,
retention
=
"10 days"
)
# 一段时间后会清空
logger
.
add
(
"file_Y.log"
,
compression
=
"zip"
)
# 保存zip格式
|
5、其他参数
logger.add("somefile.log", enqueue=True) # 异步写入 logger.add("somefile.log", serialize=True) # 序列化为json
1
2
3
4
|
logger
.
add
(
"somefile.log"
,
enqueue
=
True
)
# 异步写入
logger
.
add
(
"somefile.log"
,
serialize
=
True
)
# 序列化为json
|
6、时间格式化
logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")
1
2
|
logger
.
add
(
"file.log"
,
format
=
"{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}"
)
|
配合notifiers模块
github: https://github.com/notifiers/notifiers
文档:https://notifiers.readthedocs.io/en/latest/
7、在工程中创建多个文件处理器对象并解决中文乱码问题
# coding=utf-8 import os import sys from loguru import logger BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) log_file_path = os.path.join(BASE_DIR, 'Log/my.log') err_log_file_path = os.path.join(BASE_DIR, 'Log/err.log') logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO") # logger.add(s) # Automatically rotate too big file logger.add(log_file_path, rotation="500 MB", encoding='utf-8') logger.add(err_log_file_path, rotation="500 MB", encoding='utf-8', level='ERROR') # Automatically rotate too big file logger.debug("That's it, beautiful and simple logging!") logger.debug("中文日志可以不") logger.error("严重错误") logger.error("严重错dd误")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# coding=utf-8
import
os
import
sys
from
loguru
import
logger
BASE_DIR
=
os.path
.
dirname
(
os.path
.
dirname
(
os.path
.
abspath
(
__file__
)
)
)
log_file_path
=
os.path
.
join
(
BASE_DIR
,
'Log/my.log'
)
err_log_file_path
=
os.path
.
join
(
BASE_DIR
,
'Log/err.log'
)
logger
.
add
(
sys
.
stderr
,
format
=
"{time} {level} {message}"
,
filter
=
"my_module"
,
level
=
"INFO"
)
# logger.add(s)
# Automatically rotate too big file
logger
.
add
(
log_file_path
,
rotation
=
"500 MB"
,
encoding
=
'utf-8'
)
logger
.
add
(
err_log_file_path
,
rotation
=
"500 MB"
,
encoding
=
'utf-8'
,
level
=
'ERROR'
)
# Automatically rotate too big file
logger
.
debug
(
"That's it, beautiful and simple logging!"
)
logger
.
debug
(
"中文日志可以不"
)
logger
.
error
(
"严重错误"
)
logger
.
error
(
"严重错dd误"
)
|