Django日志记录-ValueError:&x27;非类型';对象没有属性';拆分';
我试图在一个使用Django的应用程序中配置一些日志记录,该应用程序最终将记录一些不同类型的信息以分离日志文件(例如运行模块所花费的时间、不同模块用于对流进行分类的标记等) 该应用程序正在部署到VirtualBox Ubuntu 16.04环境 现在,我只是尝试将一些简单的测试信息记录到一个名为eems-dashboard.log的文件中(我创建的文件是空的,并且似乎具有完全访问权限),只是尝试在开始时让日志工作。settings.py中的设置如下所示:Django日志记录-ValueError:&x27;非类型';对象没有属性';拆分';,django,linux,ubuntu,logging,virtualbox,Django,Linux,Ubuntu,Logging,Virtualbox,我试图在一个使用Django的应用程序中配置一些日志记录,该应用程序最终将记录一些不同类型的信息以分离日志文件(例如运行模块所花费的时间、不同模块用于对流进行分类的标记等) 该应用程序正在部署到VirtualBox Ubuntu 16.04环境 现在,我只是尝试将一些简单的测试信息记录到一个名为eems-dashboard.log的文件中(我创建的文件是空的,并且似乎具有完全访问权限),只是尝试在开始时让日志工作。settings.py中的设置如下所示: LOGGING = { 'vers
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'
回溯(最近一次呼叫最后一次):
文件“manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/webapps/uiux/env/lib/python3.5/site packages/django/core/management/_init__.py”,第364行,从命令行执行
utility.execute()
文件“/webapps/uiux/env/lib/python3.5/site packages/django/core/management/_init__.py”,第338行,在execute中
django.setup()
文件“/webapps/uiux/env/lib/python3.5/site packages/django/_init__.py”,第22行,在安装程序中
配置日志记录(settings.logging\u CONFIG,settings.logging)
文件“/webapps/uiux/env/lib/python3.5/site packages/django/utils/log.py”,第75行,在配置日志记录中
日志记录\配置\函数(日志记录\设置)
文件“/usr/lib/python3.5/logging/config.py”,第795行,在dictConfig中
dictConfigClass(config).configure()
文件“/usr/lib/python3.5/logging/config.py”,第566行,在configure中
“%r:%s%”(名称,e))
ValueError:无法配置处理程序“日志文件”:“非类型”对象没有属性“拆分”
关于这个错误,我发现了一些有限的信息,但似乎没有一个解决方案适用于手头的问题。我已经允许对日志文件的文件路径拥有完全权限,但这就是我所能找到的所有疑难解答建议。我很确定这与日志配置的语法有关,而与错误中出现的任何其他模块无关。我对上下文编程/开发非常陌生。谢谢。您需要为该
日志文件
处理程序指定一个类。我深入研究了Python的logging/config.py模块,它试图在给定配置中找到一个类键,然后对该键调用split()
。由于未在log\u文件中指定类键,它将尝试在None
上调用split()
e、 g
“日志文件”:{
“级别”:“调试”,
'filename':'/var/log/eems dashboard.log',
“格式化程序”:“详细”,
'class':'logging.handlers.SysLogHandler'
}
查看文档,看看哪个日志处理程序适合您
为什么您的第一个记录器是空字符串?@Saeed我认为空字符串并不重要。正在讨论的处理程序是'log\u file'
。