当我的控制台日志不是时,为什么我的Python Django日志文件为空?

时间:2017-06-28 08:22:57

标签: python django

我正在尝试设置Django日志文件。根据{{​​3}},我提出了以下配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
        'applogfile': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PROJECT_ROOT, 'MODELINGWEB.log'),
            'maxBytes': 1024*1024*15, # 15MB
            'backupCount': 10,
            'formatter': 'simple'
        },
    },
    'loggers': {
        '': {
          'level': 'DEBUG',
          'handlers': ['console','applogfile']
        },
    },
}

现在,当我尝试运行并加载页面时,我的控制台日志如下所示:

Performing system checks...

System check identified no issues (0 silenced).
June 28, 2017 - 10:18:22
Django version 1.11, using settings 'Modeling.settings.dev'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[28/Jun/2017 10:18:27] "GET / HTTP/1.1" 200 12564

我也得到一个文件MODELINGWEB.log,但它是空的。这是为什么?我期待它包含相同的东西......

3 个答案:

答案 0 :(得分:1)

虽然您设置记录器的配置,但您并非信息记录到文件中:

import logging

logger = logging.getLogger(__name__)
logger.info("blah blah blah")  # Or loggger.error(..), or whatever

我建议仔细查看docs(链接转到使用此logger对象的特定部分)。

我真正不知道的是在运行开发服务器时如何添加信号以触发上面的代码。

答案 1 :(得分:1)

正如您在https://docs.djangoproject.com/en/dev/topics/logging/#using-logging中看到的那样 配置记录器,处理程序,过滤器和格式化程序后,需要将日志记录调用放入代码中。使用日志框架非常简单。

所以你在控制台中看到的并不是真正的日志,而是其他东西

如果您想将控制台中的内容存入我的文件,您可以使用管道和tee

[the command you want to run] | tee you_log_file.log

例如:

ifconfig | tee ifconfig.log

您将在控制台和文件ifconfig.log中获得输出。

答案 2 :(得分:0)

您的日志记录代码是什么?您需要获取记录器以登录到指定的记录器。 我注意到你甚至没有给你的记录器命名,所以我想你只需要使用“logging.error,logging.debug等”

'loggers':{         '':{           'level':'DEBUG',           'handlers':['console','applogfile']         },