我正在使用django-mailer库,engine.py包含日志记录调用:
...
if connection is None:
connection = get_connection(backend=EMAIL_BACKEND)
logging.info("sending message '{0}' to {1}".format(
message.subject.encode("utf-8"),
u", ".join(message.to_addresses).encode("utf-8"))
)
...
但是,代码未设置此日志记录的目标。我想在不对库代码进行任何修改的情况下进行设置。
那么我将在何处放入选择要使用的文件的配置?在Django的情况下,将在settings.py文件中放一些东西吗?这是推荐/不推荐的吗?
我已阅读Python documentation on logging,但目前尚不清楚如何从其他文件设置它以便全局运作。
另外,无论如何限制特定库的日志记录?因此,我没有将所有日志记录转到中央文件,而是将其转到django-mailer的文件中。
答案 0 :(得分:1)
您可以在设置文件中灵活地设置日志记录。大量文档here。
答案 1 :(得分:0)
这是一个与@seddonym指向您的日志记录文档相关的示例(在这种情况下,Django文档将比Python文档更有帮助)。在Django settings.py文件中,您可以包含一个日志配置,如:
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
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'
},
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'custom': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': <path_to_your_log_file>,
'mode': 'a',
'maxBytes': 10000000,
'backupCount': 5,
'formatter': 'verbose'
}
},
'loggers': {
'': {
'handlers': ['custom'],
'level': 'INFO',
'propagate': True,
},
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
}
}
}