如何配置Django日志记录到应用程序文件

时间:2019-03-02 12:45:51

标签: django logging celery django-apps

我在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()   

1 个答案:

答案 0 :(得分:1)

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

要写入此记录器,您应使用该名称进行请求:

logger = logging.getLogger('api')

...

logger.debug("Log Message Here")