首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以为整个python项目设置默认日志文件吗?

可以为整个python项目设置默认日志文件吗?
EN

Stack Overflow用户
提问于 2014-11-14 00:52:29
回答 2查看 44关注 0票数 1

我使用的是django-mailer库,在engine.py中它包含了日志调用:

代码语言:javascript
运行
复制
...
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的文件中。

EN

回答 2

Stack Overflow用户

发布于 2014-11-15 01:12:39

您可以在设置文件中非常灵活地设置日志。大量的文档here

票数 1
EN

Stack Overflow用户

发布于 2014-11-15 05:23:04

这只是@seddonym向您提供的日志文档的一个示例(在这种情况下,Django文档将比Python文档更有帮助)。在您的Django settings.py文件中,您可以包括一个日志记录配置,如下所示:

代码语言:javascript
运行
复制
# 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,
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26914136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档