这是我的设置模块:
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!!")
我从各种模块获取以前的日志,但不是上面的日志条目“这是一条错误消息”。
答案 0 :(得分:29)
您的日志记录配置仅捕获django
命名空间内的日志。
这一行:
logger = logging.getLogger(__name__)
...告诉记录器使用您的模块名称作为这些日志的命名空间(docs)。如果您的模块被称为mymodule
,那么您可以通过向日志记录配置添加类似的内容来捕获这些日志:
'loggers': {
'django' : {...},
'mymodule': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
答案 1 :(得分:9)
您应该根据您的应用程序名称添加记录器配置 - 类似于
'your_app_name': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
到目前为止,您只声明了django默认消息的记录器(如系统错误)
请注意,当您使用
时,记录器消息的级别非常重要 logger.info("this is an error message!!")
打印消息的方法您的记录器级别应为INFO或更严格
答案 2 :(得分:3)
您可以将“全部捕获”记录器添加到“记录器”部分:
'loggers': {
'': {
'handlers': ['file'],
'level': 'DEBUG',
}
}
它将捕获Django默认记录器未捕获的所有日志消息。
答案 3 :(得分:1)
import logging
logger = logging.getLogger(__name__)
添加后:
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" ',
或
format = '%(name)s %(asctime)s %(levelname)s %(message)s',