任何时候你都可以开始做自己想做的事

搜索|
django 使用logger 模块 配置日志记录文件
发布时间:2024-09-20 23:24:17

logger 提供的功能比简单的 print 语句更加强大和灵活。使用 logger 来记录信息有以下几个优点:

  1. 日志级别logger 支持多种日志级别(如 DEBUG, INFO, WARNING, ERROR, CRITICAL),你可以根据信息的重要程度来选择合适的级别。这样可以根据需要过滤不同级别的日志输出,比如在生产环境中只显示错误及以上级别的日志。

  2. 多目的地:通过配置 handlers,你可以将日志输出到不同的地方,例如控制台、文件、邮件、HTTP 端点等。而 print 语句通常只能输出到标准输出(通常是控制台)。

  3. 格式化logger 可以通过 formatters 配置来定义日志的格式,包括时间戳、日志级别、模块名等,这使得日志更加结构化和易于阅读。

  4. 灵活性:你可以根据环境(开发、测试、生产)的不同,轻松地调整日志配置,甚至可以在运行时动态改变日志行为。

  5. 性能考虑:当禁用某个日志级别时,logger 会非常高效地忽略掉这些消息,不会产生额外的开销。相比之下,即使你不想看到 print 语句的信息,它仍然会被执行并消耗资源。

  6. 上下文信息logger 可以方便地添加上下文信息,比如请求ID、用户ID等,这对于追踪问题特别有用。

因此,虽然 logger.info("some message")print("some message") 在某些情况下看起来很相似,但是 logger 提供了更多的功能和更好的控制,适合于复杂的生产环境中的日志管理。对于自定义的日志记录,推荐使用 logging 模块而不是 print 语句。


要使用django的日志记录(使用python自带的Logoging模块)

第一步:
在setting.py中配置:

#日志

LOGGING = {

    'version': 1,

    'disable_existing_loggers': False,

    'formatters': {

        'verbose': {

            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'

        },

        'simple': {

            'format': '%(levelname)s %(message)s'

        },

    },

    'handlers': {

        'console': {

            'level': 'INFO',

            'class': 'logging.StreamHandler',

            'formatter': 'simple'

        },

        'file': {

            'level': 'INFO',

            'class': 'logging.FileHandler',

            'filename': '路径\django_app.log',#存放日志文件的路径,会自动生成这里定义的文件名,注意日志文件尽量不要放在django发布目录,并且确保django项目有写入权限

            'formatter': 'verbose'

        },

    },

    'loggers': {

        '': {  # 根日志记录器

            'handlers': ['console', 'file'],

            'level': 'DEBUG',

            'propagate': True,

        },

        'django.db.backends': {  # 数据库日志

            'level': 'DEBUG',

            'handlers': ['console'],

            'propagate': True,

        },


        'celery_tasks': {  # 特定的任务模块,这里的名称是app级的模块名

            'level': 'DEBUG',

            'handlers': ['console', 'file'],

            'propagate': True,

        },

    },

}

第二步:

  • Django 会自动记录严重的错误,如 500 错误。

  • 对于自定义的日志记录,需要你在代码中明确地使用 logging 模块来进行记录。

  • 如果你想记录额外的信息,比如警告或调试细节,那么就需要在相关代码处加入相应的日志记录语句,类似用Print语句在控制台显示对应的信息效果。


在需要输出日志的视图或者函数页面,导入logging模块

import logging

# 获取日志记录器

logger = logging.getLogger(__name__)

然后在所需输出日志的代码中加入:

logger.warning("自定义信息")
或者:
logger.info(f"日志信息: {所需输出的变量信息}.")

或者:

try:

 ....................

except Exception as e:

    logger.error(f"错误信息': {e}")

这样日志就会写入你定义的 'filename': '路径\django_app.log',文件中
----------------------------------------------------------------