Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Django日志会跳过日志条目?_Django_Django Logging - Fatal编程技术网

为什么Django日志会跳过日志条目?

为什么Django日志会跳过日志条目?,django,django-logging,Django,Django Logging,这是我的设置模块: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/django-python/django/testapp/testapp.log', }, },

这是我的设置模块:

LOGGING = {
  'version': 1,
  'disable_existing_loggers': False,
  'handlers': {
    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/django-python/django/testapp/testapp.log',
    },
  },
  'loggers': {
    'django': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
  },
}
这是我在视图文件中的代码:

import logging
logger = logging.getLogger(__name__)
logger.info("this is an error message!!")

我从各个模块获取以前的日志,但不是上面的日志条目“这是一条错误消息”

您应该根据应用程序名称添加记录器配置,例如

    'your_app_name': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
到目前为止,您已经声明了django默认消息的唯一记录器(如系统错误)


请注意,记录器消息的级别非常重要,因此在使用

    logger.info("this is an error message!!")

打印消息的方法日志记录器的级别应为INFO或更严格

日志记录配置仅捕获
django
命名空间内的日志

这一行:

logger = logging.getLogger(__name__)
。。。告诉记录器使用模块名称作为这些日志()的命名空间。如果您的模块名为
mymodule
,则可以通过向日志记录配置中添加类似的内容来捕获这些日志:

'loggers': {
   'django' : {...},
   'mymodule': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
},
添加后:

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(name)s %(levelname)s %(message)s',
)
或者只添加settings.py:

import logging

    logging.basicConfig(
        level = logging.DEBUG,
        format = '%(name)s %(levelname)s %(message)s',
    )
我们可能会将格式更改为:

format = '"%(levelname)s:%(name)s:%(message)s"  ',

您可以将“全面捕获”记录器添加到记录器部分:

'loggers': {
    '': {
        'handlers': ['file'],
        'level': 'DEBUG',
    }
}

它将捕获Django的默认日志记录器未捕获的所有日志消息。

仅在此添加一点,如果您将此日志代码放置在用户模块的视图中,
\uu name\uuuuuuuuu
将输出
users.view
。因此,使用上面solarissmoke的示例,您可以将
mymodule
更改为
users。view
“modules”让我感到困惑,基本上需要使用的是应用程序名(几个应用程序可以是django项目的一部分),因此在settings.py中,我必须使用appname.views而不是“mymodule”
format = '%(name)s %(asctime)s %(levelname)s %(message)s',
'loggers': {
    '': {
        'handlers': ['file'],
        'level': 'DEBUG',
    }
}