Django просматривает журналы исключений с уровнем INFO, а не ERROR
views.py
def error(request):
logger.error('logger.error - test error')
raise Exception('raise Exception - test error')
1-е настройки протоколирования:
# 1
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # True in dictConfig default
'formatters': {
'syslog': {
'format': 'django %(levelname)s %(name)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'syslog': {
'class': 'logging.handlers.SysLogHandler',
'formatter': 'syslog',
'facility': 'local1',
'address': '/dev/log'
},
},
'loggers': {
'django': {
'handlers': ['syslog'],
'level': 'ERROR',
'propagate': True,
},
'': {
'handlers': ['syslog'],
'level': 'ERROR'
},
},
'root': {
'handlers': ['syslog'],
'level': 'ERROR'
}
}
1-е логи (2 файла в django dir)
sudo tail /var/log/my_proj/django/syslog.info
<*NO log!>
sudo tail /var/log/my_proj/django/syslog.error
2022-02-15T09:49:43.019832+05:00 my_proj-stage-main1 django ERROR apps.demo.views 180029 140050762920576 logger.error - test error
2-е настройки протоколирования:
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # True in dictConfig default
'formatters': {
'syslog': {
'format': 'django %(levelname)s %(name)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'syslog': {
'level': 'INFO',
'class': 'logging.handlers.SysLogHandler',
'formatter': 'syslog',
'facility': 'local1',
'address': '/dev/log'
},
},
'loggers': {
'django': {
'handlers': ['syslog'],
'level': 'INFO',
'propagate': True,
},
'': {
'handlers': ['syslog'],
'level': 'INFO'
},
},
'root': {
'handlers': ['syslog'],
'level': 'INFO'
}
}
2-й журнал (2 файла в django dir)
sudo tail /var/log/my_proj/django/syslog.info
2022-02-15T10:00:37.377018+05:00 my_proj-stage-main1 django INFO django.request 185769 140536088752768 OK: /ru/demo/error#012Traceback (most recent call last):#012 File "/home/my_proj/.pyenv/versions/3.10.2/envs/my_proj-3.10.2/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner#012 response = get_response(request)#012 File "/home/my_proj/.pyenv/versions/3.10.2/envs/my_proj-3.10.2/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response#012 response = wrapped_callback(request, *callback_args, **callback_kwargs)#012 File "/home/my_proj/my_proj/apps/accounts/middlewares/roles.py", line 72, in _wrapped_view#012 return view_func(request, *args, **kwargs)#012 File "/home/my_proj/my_proj/apps/demo/views.py", line 78, in error#012 raise Exception('raise Exception - test error')#012Exception: raise Exception - test error
sudo tail /var/log/my_proj/django/syslog.error
2022-02-15T10:00:37.366807+05:00 my_proj-stage-main1 django ERROR apps.demo.views 185769 140536088752768 logger.error - test error
rsyslog config
cat /etc/rsyslog.conf
module(load="imuxsock") # provides support for local system logging
module(load="imklog") # provides kernel logging support
module(load="imudp")
input(type="imudp" port="514")
$ActionFileDefaultTemplate RSYSLOG_FileFormat
$FileOwner my_proj
$FileGroup my_proj
$FileCreateMode 0660
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
auth,authpriv.* /var/log/auth.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
*.emerg :omusrmsg:*
$template TEMPLATE_ERROR,"/var/log/my_proj/%programname%/syslog.error"
$template TEMPLATE_WARNING,"/var/log/my_proj/%programname%/syslog.warning"
$template TEMPLATE_INFO,"/var/log/my_proj/%programname%/syslog.info"
$template TEMPLATE_DEBUG,"/var/log/my_proj/%programname%/syslog.debug"
local1.err ?TEMPLATE_ERROR
local1.=warning ?TEMPLATE_WARNING
local1.=info;local1.=notice ?TEMPLATE_INFO
local1.=debug ?TEMPLATE_DEBUG
Вопрос: Почему "raise Exception" регистрируется как INFO. ("logger.error" работает как ожидалось)
debian 11, python 3.10, django 3.2