【6.0】封装logger

发布时间 2023-08-19 17:19:31作者: Chimengmeng

【一】引入

  • 在项目运行过程中,日志起着非常重要的作用。
  • 它可以记录程序的运行状态、错误信息、警告以及程序员的输出,从而帮助我们更好地观察和分析项目的运行情况。
  • 因此,在每个项目中,都需要配置相应的日志记录功能。

【二】日志的作用

  • 记录程序运行过程中的错误和异常
    • 日志可以帮助我们追踪和定位程序中的错误和异常,并及时采取相应的措施来解决问题。
  • 记录警告信息
    • 在程序运行过程中,可能会遇到一些警告情况
      • 例如某个函数被废弃或某个操作可能引发潜在问题等。
    • 通过记录警告信息,我们可以在出现问题之前进行预警和处理。
  • 记录程序员的输出
    • 在开发和调试阶段,程序员通常会使用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对象记录日志信息。

  • 这样做的好处是,在项目上线后可以方便地关闭或调整日志的输出级别,避免敏感信息泄露,同时也提供了更加灵活和可定制的日志记录功能。