我正在使用在Docker容器中运行的Django。我认为有些事情我无法理解。有一些for语句和条件语句,我想确切地看看问题出在哪里。对于我而言,最简单的方法是是否可以将一些变量输出到控制台。在Django中有可能吗?
就像是:
for item in items:
output-to-console("Running item ")+str(item.id)
if item.active:
output-to-console(str(item.id) + " is active")
这可能吗?我知道有调试工具,但是如果存在某些输出到控制台的工具,那么在我看来情况似乎有些过头...
最佳答案
您需要配置记录器。 Here's a simple example。
区别在于您可以将logging.StreamHandler
用作处理程序的类,以将特定的记录器打印到stdout。这会将每个日志打印到控制台中:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'default': {
'format': '[DJANGO] %(levelname)s %(asctime)s %(module)s '
'%(name)s.%(funcName)s:%(lineno)s: %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'default',
}
},
'loggers': {
'*': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
}
},
}
然后,您可以像这样使用它:
import logging
logger = logging.getLogger(__name__)
logger.info('something here')
当您遵循容器
docker[-compose] logs -f tail==100
的日志时,您将看到记录器打印的所有内容。