我正在使用在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的日志时,您将看到记录器打印的所有内容。

10-07 21:22