1

Django ロギングを使用しています。以下は、現在 Django ロギングを呼び出す方法です。

logger = logging.getLogger(__name__)
.
.
.
logger.info("Database results") 

以下は、settings.py ファイルからの私の Django ロギング構成です。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'default': {
            'format': '[%(asctime)s] %(levelname)s:%(message)s'
        },
    },
    'handlers': {
        'email_admins': {
            'level': 'INFO',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': False,
        },
        'admin_console': {
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'default'
        },
        'null': {
            'level':'DEBUG',
            'class':'django.utils.log.NullHandler',
            'formatter': 'default',
        },
        'file_handler': {
            'level': 'DEBUG',
            'formatter':'default',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename':'logs/prj_log',
            'when':'midnight',
            'interval':1,
        },
        'request_handler': {
                'level':'ERROR',
                'class':'logging.handlers.RotatingFileHandler',
                'filename': 'logs/django_request.log',
                'maxBytes': 1024*1024*5, # 5 MB
                'backupCount': 5,
                'formatter':'default',
        },
    },
    'loggers': {
        '': {
            'handlers': ['email_admins', 'file_handler', 'admin_console'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'django': {
            'handlers':['null'],
            'propagate': True,
            'level':'INFO',
        },
        'django.request': { 
            'handlers': ['email_admins', 'request_handler'],
            'level': 'ERROR',
            'propagate': False,
        },
    }
}

Database resultsという件名のメールが届きます。メールの本文にさらに情報を追加するにはどうすればよいですか?

4

2 に答える 2

1

django.utils.log.AdminEmailHandler は、スタック トレースのみを電子メール メッセージとしてログに記録します (詳細については、ハンドラー コードを参照してください)。したがって、情報レベルで何かをログに記録したい場合は、メールを送信する独自​​のハンドラーを作成する必要があります。

カスタム ハンドラーを使用しても、2 つのパラメーター (件名とメッセージ テキストなど) を一度に記録することはできません。おそらくシリアル化されたオブジェクトをログに記録したいので、件名をハードコーディングする必要があります

于 2013-01-25T12:18:59.290 に答える
-1
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    }
},
'handlers': {
    'mail_admins': {
        'level': 'ERROR',
        'filters': ['require_debug_false'],
        'class': 'django.utils.log.AdminEmailHandler'
    }
},
'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': True,
        },
    }
}
于 2013-01-26T01:04:07.700 に答える