首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python/Django:日志到runserver下的控制台,日志到Apache下的文件

Python/Django:日志到runserver下的控制台,日志到Apache下的文件
EN

Stack Overflow用户
提问于 2010-12-30 07:44:58
回答 6查看 149.6K关注 0票数 119

当我在manage.py runserver下运行我的Django应用程序时,我如何将跟踪消息发送到控制台(如print),但当我在Apache下运行该应用程序时,如何将这些消息发送到日志文件?

我回顾了Django logging,尽管它的灵活性和高级用途的可配置性给我留下了深刻的印象,但我仍然对如何处理我的简单用例感到困惑。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-12-30 07:48:24

在mod_wsgi下运行时,打印到stderr的文本将显示在httpd的错误日志中。您可以直接使用print,也可以改用logging

代码语言:javascript
复制
print >>sys.stderr, 'Goodbye, cruel world!'
票数 87
EN

Stack Overflow用户

发布于 2012-04-15 01:19:32

这是一个基于Django日志的解决方案。它使用调试设置,而不是实际检查您是否正在运行开发服务器,但是如果您找到更好的方法来检查它,那么它应该很容易适应。

代码语言:javascript
复制
LOGGING = {
    'version': 1,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/your/file.log',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

if DEBUG:
    # make all loggers use the console.
    for logger in LOGGING['loggers']:
        LOGGING['loggers'][logger]['handlers'] = ['console']

详情请参见https://docs.djangoproject.com/en/dev/topics/logging/

票数 107
EN

Stack Overflow用户

发布于 2011-01-12 14:09:25

您可以在settings.py文件中配置日志记录。

举个例子:

代码语言:javascript
复制
if DEBUG:
    # will output to your console
    logging.basicConfig(
        level = logging.DEBUG,
        format = '%(asctime)s %(levelname)s %(message)s',
    )
else:
    # will output to logging file
    logging.basicConfig(
        level = logging.DEBUG,
        format = '%(asctime)s %(levelname)s %(message)s',
        filename = '/my_log_file.log',
        filemode = 'a'
    )

然而,这取决于DEBUG的设置,也许你不想担心它是如何设置的。请在How can I tell whether my Django application is running on development server or not?上查看此答案,以获得编写该条件的更好方法。编辑:上面的例子来自Django 1.1项目,Django中的日志配置自该版本以来有所改变。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4558879

复制
相关文章

相似问题

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