04-django配置日志-loguru
·
django中使用日志模块-loguru
- loguru 是一个替代 Python logging 的第三方库;
- loguru的用法非常简单,在 loguru 中有且仅有一个对象:logger。
1、基本使用方式:
安装模块后直接导入使用即可!
from loguru import logger
logger.info("11111111111111111111")
logger.warning("11111111111111111111")
logger.error("11111111111111111111")
输出效果:
安装:
这里有个注意点: 安装固定的版本!!
python环境3.10,最新版本0.7.3,会报错:
ModuleNotFoundError: No module named 'win32_setctime'
# 先卸载当前版本
pip uninstall loguru -y
# 安装一个稳定版本(例如0.7.2,可根据你之前的版本调整)
pip install loguru==0.7.2
安装后就可以直接使用了,如果需要自定义配置和输出保存日志,再进行如下封装:
2、二次封装:
封装的日志模块路径:common—>utils–>logu文件夹中;
可以根据自己需求根据注释调整日志代码即可!
setting.py
"""
-*- coding: utf-8 -*-
@File : setting.py
描述:日志框架的配置
"""
import os
from pathlib import Path
# 获取项目根目录
# project_root = settings.BASE_DIR
# 日志文件存储配置
LOGURU_FILE = {
"is_show": "off",
"level": "ERROR",
'path': os.path.join(Path(__file__).parent, 'logs', 'test{time:YYYY-MM-DD}.logu'),
"rotation": "10MB",
'retention': "7days",
}
# 日志控制台配置
LOGURU_CONSOLE = {
"is_show": "on", # 配置是否开启控制台打印日志
"level": "INFO", # 最低打印级别是info级别
}
"""
TRACE: 最详细的日志信息,用于追踪代码执行过程。Loguru默认情况下使用DEBUG级别作为最低日志记录级别,而不是TRACE级别。这是因为TRACE级别会产生大量的日志信息。
DEBUG: 用于记录详细的调试信息,通常只在开发过程中使用,以帮助诊断问题。
INFO: 用于记录常规信息,比如程序的正常运行状态或一些关键的操作。
SUCCESS: 通常用于记录操作成功的消息,比如任务完成或数据成功保存。
WARNING: 用于记录可能不是错误,但需要注意或可能在未来导致问题的事件。
ERROR: 用于记录错误,这些错误可能会影响程序的某些功能,但通常不会导致程序完全停止。
CRITICAL: 用于记录非常严重的错误,这些错误可能会导致程序完全停止或数据丢失。
"""
log.py
"""
-*- coding: utf-8 -*-
@File : log.py
描述:logu 封装类!
"""
import os
from pathlib import Path
from loguru import logger
import sys
from common.utils.logu import setting
class LoguruConfig:
def __init__(self):
self._file_set = setting.LOGURU_FILE
self._console_set = setting.LOGURU_CONSOLE
def configure(self):
logger.remove() # 清除所有现有的日志处理器(如果有的话)
# 控制台输出
if self._console_set.get('is_show', '').lower() == "on":
# 设置处理程序处理的日志消息的最低级别。
level = self._console_set.get('level', 'INFO')
# 只需要在add方法中添加配置即可!
logger.add(
# 定义日志消息的输出位置,可以是文件路径、标准输出(stdout)、标准错误(stderr,默认)或其他自定义的输出位置。
sink=sys.stderr,
# format="{time:xxxx过滤条件} {level:xxxxxxxx过滤条件} {message}" 日志的格式化显示配置
# logger.add('runtime.log', format="{time} {level} {message}", filter="my_module", level="INFO")
# 以下是自定义显示样式,默认的就挺好看了!
format="<level>{level:<8}| </level>" # level显示设置宽度占8个字符
"<u><green>{file.path}:{line}</green></u> : \r\n"
" "
"<level>{message}</level>", # 显示的日志信息
colorize=True, # 默认是True level会根据不同级别显示不同颜色
enqueue=True, # 异步日志
backtrace=True, # 确定异常跟踪是否应该延伸到捕获错误的点之外
diagnose=True, # 确定变量值是否应在异常跟踪中显示
)
# 在本目录下生成日志文件 注意:此行为了简单使用,可以直接添加输出到当前目录!
# logger.add('logu.log')
# 文件保存
if self._file_set.get('is_show', '').lower() == "on":
log_path = self._file_set.get('path', os.path.join(Path(__file__).parent.parent.parent, '../../../logs',
'test{time:YYYY-MM-DD}.logu'))
level = self._file_set.get('level', 'INFO')
rotation = self._file_set.get('rotation', '10MB')
retention = self._file_set.get('retention', '7 days')
logger.add(
log_path,
rotation=rotation, # 日志的最长保留时间!
retention=retention, # 用于设置日志文件的保留时间。
compression='zip', # 布尔值,指定 配置文件的压缩格式
encoding="utf-8",
enqueue=True, # 异步日志 布尔值,指定是否将日志消息放入队列中处理,用于多线程应用中避免阻塞。
format="[{time:YYYY-MM-DD HH:mm:ss} {level:<6} | {file}:{module}.{function}:{line}] {message}",
level=level,
)
# 给logger对象添加自定义配置
config = LoguruConfig()
config.configure()
log = logger; # 调整名字为log
if __name__ == '__main__':
# 测试
log.debug("这是一条跟踪消息") # 不打印
log.info("这是一条普通信息") # 设置了打印info级别及以上
log.success("操作成功完成")
log.warning("这是一条警告信息")
log.error("这是一条错误信息")
log.critical("这是一条严重错误信息")
init.py
"""
-*- coding: utf-8 -*-
描述: 注意安装 pip install logu
"""
from .log import log
使用封装的loguru:
导包:
from common.utils import log
使用:
log.debug("这是一条跟踪消息") # 不打印
log.info("这是一条普通信息") # 设置了打印info级别及以上
log.success("操作成功完成")
log.warning("这是一条警告信息")
log.error("这是一条错误信息")
log.critical("这是一条严重错误信息")
更多推荐
所有评论(0)