【6.0】封装logger
【一】引入
- 在项目运行过程中,日志起着非常重要的作用。
- 它可以记录程序的运行状态、错误信息、警告以及程序员的输出,从而帮助我们更好地观察和分析项目的运行情况。
- 因此,在每个项目中,都需要配置相应的日志记录功能。
【二】日志的作用
- 记录程序运行过程中的错误和异常:
- 日志可以帮助我们追踪和定位程序中的错误和异常,并及时采取相应的措施来解决问题。
- 记录警告信息:
- 在程序运行过程中,可能会遇到一些警告情况
- 例如某个函数被废弃或某个操作可能引发潜在问题等。
- 通过记录警告信息,我们可以在出现问题之前进行预警和处理。
- 在程序运行过程中,可能会遇到一些警告情况
- 记录程序员的输出:
- 在开发和调试阶段,程序员通常会使用print语句输出一些调试信息
- 如变量的值、程序流程等。
- 通过日志记录这些输出信息,可以方便地观察程序的执行情况。
- 在开发和调试阶段,程序员通常会使用print语句输出一些调试信息
- 观察项目运行情况:
- 日志还可以帮助我们了解项目的运行状态
- 例如请求的处理时间、资源消耗等
- 有助于优化项目的性能和稳定性。
- 日志还可以帮助我们了解项目的运行状态
【三】django中加入记录日志的功能
【1】配置日志字典
-
首先,在项目的
settings.py
文件中,我们可以配置一个日志字典来定义日志记录的行为。 -
luffyCity\luffyCity\settings\dev.py
###############日志配置文件#################
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
# 实际开发建议使用WARNING
'level': 'WARNING',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
# 实际开发建议使用ERROR
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
# 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR代表的是小luffyapi
'filename': os.path.join(os.path.dirname(BASE_DIR), "logs", "luffy.log"),
# 日志文件的最大值,这里我们设置300M
'maxBytes': 300 * 1024 * 1024,
# 日志文件的数量,设置最大日志数量为10
'backupCount': 10,
# 日志格式:详细格式
'formatter': 'verbose',
# 文件内容编码
'encoding': 'utf-8'
},
},
# 日志对象
'loggers': {
'django': {
'handlers': ['console', 'file'],
'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统
},
}
}
【2】获取logger对象
-
在项目的某个地方,我们需要获取logger对象,以便记录日志。
-
可以在
utils/common_logger.py
文件中编写以下代码来获取logger对象。 -
utils/common_logger.py
# 日志对象获取,以后想用日志的地方,直接导入,使用 logger.info error....
import logging
logger = logging.getLogger('django')
【3】使用方法
- 在代码中的需要记录日志的地方,直接使用已获取的logger对象进行日志记录操作
# DEBUG < INFO < WARNING < ERROR < CRITICAL
# 在需要记录日志的位置使用logger对象进行日志记录
logger.debug('debug级别')
logger.info('info级别')
logger.warning('warning级别')
logger.error('error级别')
logger.critical('CRITICAL级别')
-
通过以上步骤,我们可以在Django项目中配置和使用日志记录功能。
- 在开发阶段,建议使用高级别(如INFO或WARNING)来输出日志信息
- 在项目上线后,可以将日志输出级别调整为较低级别,以减少不必要的日志输出。
-
这样,在项目运行过程中,我们不再使用print语句输出调试信息,而是通过logger对象记录日志信息。
-
这样做的好处是,在项目上线后可以方便地关闭或调整日志的输出级别,避免敏感信息泄露,同时也提供了更加灵活和可定制的日志记录功能。
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17642698.html