Django和Docker:将信息输出到控制台

时间:2018-08-24 12:51:01

标签: python django docker

我正在使用在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")

这可能吗?我知道有调试工具,但是如果存在某些输出到控制台的工具,那么在我看来情况就显得过分了。

2 个答案:

答案 0 :(得分:1)

您需要配置记录器。 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的日志时,您将看到记录器打印的所有内容。

答案 1 :(得分:-1)

您可以使用print()函数来打印所需的值
第一次运行

sudo docker-compose up -d --build
sudo docker-compose logs -f

现在,当您调用相应的文件时,您可以在控制台中看到打印的值。