【问题标题】:Django "./manage.py runserver" log to file instead of consoleDjango“./manage.py runserver”记录到文件而不是控制台
【发布时间】:2016-11-21 10:30:27
【问题描述】:

运行python manage.py runserver 将启动Django 的开发服务器,并将所有日志打印到控制台。

我需要将日志写入django.log 文件而不是控制台。

Django logging documentation 很好,但我似乎无法将日志配置为与python manage.py runserver 相同的日志。

问题:如何将 ./manage.py runserver 中的所有内容记录到文件中?

【问题讨论】:

    标签: python django


    【解决方案1】:

    这是一个简单的 linux 重定向,所以它应该看起来像这样:

    python manage.py runserver 0.0.0.0:8080 >> log.log 2>&1
    

    请注意,我已将 8080 设置为本地端口,您应该根据您的项目进行更改。

    PS:这个方法(manage runserver)只能用于开发,不能用于部署

    【讨论】:

    • 使用 Docker 的语法:CMD ["/bin/sh", "-c", "/manage.py runserver 0.0.0.0:3000 >> log.log 2>&1"]跨度>
    • 2>&1 是做什么的?
    • 2>&1 将错误消息重定向到常规输出
    【解决方案2】:

    这些是一些示例设置,可确保将日志写入控制台和文件。您可以在您的开发设置中添加/修改它:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'standard': {
                'format': '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'
            },
        },
        'handlers': {
            # this is what you see in runserver console
            'console': {
                'class': 'logging.StreamHandler',
                'formatter': 'standard',
            },
            # this handler logs to file
            #▼▼▼▼ this is just a name so loggers can reference it
            'file': {  
                'class': 'logging.FileHandler',
                #  choose file location of your liking
                'filename': os.path.normpath(os.path.join(BASE_DIR, '../../logs/django.log')),  
                'formatter': 'standard'
            },
        },
        'loggers': {
            # django logger
            'django': {
                # log to console and file handlers
                'handlers': ['console', 'file'],  
                'level': os.getenv('DJANGO_LOG_LEVEL', 'ERROR'),  # choose verbosity
            },
        },
    }
    

    【讨论】:

    • 这只会打印出错误日志级别的日志。因此,结果与 runserver 命令不同。我不知道 runserver 命令使用什么日志级别,如果你发现了请告诉我:)
    • DJANGO_LOG_LEVEL 设置为“错误”。将其设置为“DEBUG”,所有内容都会被记录。
    猜你喜欢
    • 1970-01-01
    • 2015-02-18
    • 2011-06-01
    • 2012-01-13
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多