运行python manage.py runserver
将启动Django的开发服务器,所有日志都将打印到控制台。
我需要将日志写入django.log
文件而不是控制台。
Django logging documentation很好,但我似乎无法将日志记录配置为与python manage.py runserver
相同。
问题:如何将./manage.py runserver
中的所有内容记录到文件中?
答案 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
},
},
}