Django logging - ValueError: 'NoneType' object has no attribute 'split'
Django logging - ValueError: 'NoneType' object has no attribute 'split'
我正在尝试在使用 Django 的应用程序中配置一些日志记录,最终将记录几种不同类型的信息以分隔日志文件(例如 运行 一个模块所花费的时间,不同模块的标记分类流量等)。
应用程序正在部署到 VirtualBox Ubuntu 16.04 环境。
现在,我只是想将一些简单的测试信息记录到名为 eems-dashboard.log 的文件(我创建的文件是空的,似乎具有完全访问权限)中,只是为了尝试让日志记录最初工作。 settings.py 中的设置如下所示:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
'log_file':{
'level': 'DEBUG',
'filename': '/var/log/eems-dashboard.log',
'formatter': 'verbose'
}
},
'loggers': {
'': {
'handlers': ['log_file'],
'level': 'DEBUG',
},
'django.request': {
'handlers': ['log_file'],
'propagate': True,
'level': 'DEBUG'
},
'apps': {
'handlers': ['log_file'],
'level': 'DEBUG',
'propagate': True,
}
}
}
但是,每当我尝试 运行 本地部署此应用程序时,我都会收到以下错误:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/webapps/uiux/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/webapps/uiux/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 338, in execute
django.setup()
File "/webapps/uiux/env/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/webapps/uiux/env/lib/python3.5/site-packages/django/utils/log.py", line 75, in configure_logging
logging_config_func(logging_settings)
File "/usr/lib/python3.5/logging/config.py", line 795, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib/python3.5/logging/config.py", line 566, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'log_file': 'NoneType' object has no attribute 'split'
我找到了一些关于此错误的有限信息,但 none 的解决方案似乎适用于手头的问题。我已授予对日志文件的文件路径的完全权限,但这就是我能够找到的所有故障排除建议。我很确定它与 LOGGING 配置的语法有关,而不是错误中出现的任何其他模块的问题。一般来说,我对 programming/developing 非常陌生。谢谢。
您需要为 log_file
处理程序指定 class。我深入研究了 Python 的 logging/config.py 模块,它试图在给定配置中找到一个 class 键,然后再调用 split()
键。由于您没有在 log_file
字典中指定 class 键,它将尝试在 None
.
上调用 split()
例如
'log_file':{
'level': 'DEBUG',
'filename': '/var/log/eems-dashboard.log',
'formatter': 'verbose',
'class': 'logging.handlers.SysLogHandler'
}
查看文档以了解适合您的日志记录处理程序。
我正在尝试在使用 Django 的应用程序中配置一些日志记录,最终将记录几种不同类型的信息以分隔日志文件(例如 运行 一个模块所花费的时间,不同模块的标记分类流量等)。
应用程序正在部署到 VirtualBox Ubuntu 16.04 环境。
现在,我只是想将一些简单的测试信息记录到名为 eems-dashboard.log 的文件(我创建的文件是空的,似乎具有完全访问权限)中,只是为了尝试让日志记录最初工作。 settings.py 中的设置如下所示:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
'log_file':{
'level': 'DEBUG',
'filename': '/var/log/eems-dashboard.log',
'formatter': 'verbose'
}
},
'loggers': {
'': {
'handlers': ['log_file'],
'level': 'DEBUG',
},
'django.request': {
'handlers': ['log_file'],
'propagate': True,
'level': 'DEBUG'
},
'apps': {
'handlers': ['log_file'],
'level': 'DEBUG',
'propagate': True,
}
}
}
但是,每当我尝试 运行 本地部署此应用程序时,我都会收到以下错误:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/webapps/uiux/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/webapps/uiux/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 338, in execute
django.setup()
File "/webapps/uiux/env/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/webapps/uiux/env/lib/python3.5/site-packages/django/utils/log.py", line 75, in configure_logging
logging_config_func(logging_settings)
File "/usr/lib/python3.5/logging/config.py", line 795, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib/python3.5/logging/config.py", line 566, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'log_file': 'NoneType' object has no attribute 'split'
我找到了一些关于此错误的有限信息,但 none 的解决方案似乎适用于手头的问题。我已授予对日志文件的文件路径的完全权限,但这就是我能够找到的所有故障排除建议。我很确定它与 LOGGING 配置的语法有关,而不是错误中出现的任何其他模块的问题。一般来说,我对 programming/developing 非常陌生。谢谢。
您需要为 log_file
处理程序指定 class。我深入研究了 Python 的 logging/config.py 模块,它试图在给定配置中找到一个 class 键,然后再调用 split()
键。由于您没有在 log_file
字典中指定 class 键,它将尝试在 None
.
split()
例如
'log_file':{
'level': 'DEBUG',
'filename': '/var/log/eems-dashboard.log',
'formatter': 'verbose',
'class': 'logging.handlers.SysLogHandler'
}
查看文档以了解适合您的日志记录处理程序。