Django“./manage.py runserver”登录到文件而不是控制台

时间:2016-11-21 10:30:28

标签: python django

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

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

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

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

2 个答案:

答案 0 :(得分:9)

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

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

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

PS:此方法(manage runserver)应仅用于开发,不用于部署

答案 1 :(得分:1)

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

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
        },
    },
}