使用第三方库增强 Django 日志(logging)功能
Django 自带的 logging 模块已经足够强大,但是如果需要使用更高级的功能,我们可以使用第三方库进行增强。这里我们介绍两个常用的库:loguru 和 structlog。
loguru:一个优雅而灵活的日志记录库,能够捕获堆栈跟踪,线程 / 协程,并生成 JSON。
使用方式:
安装:
pip install loguru
在 settings.py 中进行配置:
LOGGING_CONFIG = { "version": 1, "disable_existing_loggers": False, "handlers": { "console": { "class": "loguru._logger.Logger", "formatter": "console", "level": "INFO", "sink": sys.stdout } }, "formatters": { "console": { "format": "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}:{function}:{line}</cyan> | <level>{message}</level>" } }, "loggers": { "django": {"handlers": ["console"], "level": "INFO", "propagate": True}, "pidancode.com": {"handlers": ["console"], "level": "DEBUG", "propagate": True}, } }
在代码中使用:
import logging from loguru import logger def my_function(): logger.info("Hello, World!") logging.getLogger("pidancode.com").info("Hello, World!")
structlog:一个 Python 日志记录器,使用结构化消息记录。它可与 Python 的 logging 模块一起使用。
使用方式:
安装:pip install structlog
在 settings.py 中进行配置:
LOGGING_CONFIG = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'json': { '()': 'structlog.stdlib.ProcessorFormatter', 'processor': 'structlog.processors.JSONRenderer' }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'formatter': 'json', 'stream': 'ext://sys.stdout', }, }, 'loggers': { 'django': { 'handlers': ['console'], 'level': 'INFO', 'propagate': True, }, 'pidancode.com': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': True, }, }, }
在代码中使用:
import logging import structlog logger = structlog.get_logger("pidancode.com") def my_function(): logger.msg("Hello, World!") logging.getLogger("pidancode.com").info("Hello, World!")
相关文章