【问题标题】:How configure Django logging to file for app如何将 Django 日志配置为应用程序文件
【发布时间】:2023-03-12 14:24:01
【问题描述】:

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

【问题讨论】:

    标签: django logging celery django-apps


    【解决方案1】:

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

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

    logger = logging.getLogger('api')
    
    ...
    
    logger.debug("Log Message Here")
    

    【讨论】:

    • 或者,将您的记录器从 api 重命名为 email_api
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多