首页 > 解决方案 > 如何将 Django 日志配置为应用程序文件

问题描述

我正在努力使用 Django 日志记录配置。我有一个名为“api”的应用程序,我想保存该应用程序的所有日志以归档。当我为 django 设置一个记录器时,一切正常,但是当我将它更改为我的 app_name 时,它​​就不行了。这是我的配置:

文件结构:

email_api
    api
        tasks.py
    email_api
        celery.py
        settings
    logs
        email.log

我的日志记录配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'logs/email.log',
        },
    },
    'loggers': {
        'api': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

我记录的tasks.py文件:

import logging

logger = logging.getLogger(__name__)

@app.task(bind=True, default_retry_delay=3, max_retries=3,)
def send_email(self, data, email_id):
    message = create_message(data, email)
    try:
        logger.debug("Log Message Here")
        message.send()   

标签: djangologgingcelerydjango-apps

解决方案


中的键LOGGING['loggers'][...] dict是记录器的名称。您已将日志记录配置api为记录器的名称。

为了写入此记录器,您应该使用该名称请求它:

logger = logging.getLogger('api')

...

logger.debug("Log Message Here")

推荐阅读