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 settingclass LoguruConfig:def __init__(self):self._file_set = setting.LOGURU_FILEself._console_set = setting.LOGURU_CONSOLEdef 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("这是一条严重错误信息")