I have this LOGGING
settings for my Django app. What I was expecting is that the views logs
would go into their own separate folder when I have three different loggers
in my views
file.
Logger in my settings
file:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'views_error_file': {
'class': 'logging.FileHandler',
'filename': 'logs/errors/views.debug.log',
},
'views_info_file': {
'class': 'logging.FileHandler',
'filename': 'logs/infos/views.debug.log',
},
'views_debug_file': {
'class': 'logging.FileHandler',
'filename': 'logs/debugs/views.debug.log',
}
},
'loggers': {
'py_folder.views': {
'handlers': ['views_error_file'],
'level': 'ERROR',
},
'py_folder.views': {
'handlers': ['views_info_file'],
'level': 'INFO',
},
'py_folder.views': {
'handlers': ['views_debug_file'],
'level': 'DEBUG',
}
}
}
The views.py
file:
import logging
# Get an instance of a logger
logger = logging.getLogger(__name__)
def sample_function(request):
params_choices = ['param_1', 'param_2']
sample_param = request.POST.get('sample_param')
# logger.debug should be logged at logs/debugs/views.debug.log
logger.debug(sample_param)
if sample_param in params_choices:
if sample_param == 'param_1':
# logger.info should be logged at logs/infos/views.debug.log
logger.info("param_1 okay")
return redirect("/param_1-req")
else:
# logger.error should be logged at logs/error/views.debug.log
logger.error("param_2 okay")
return redirect("/param_2-req")
else:
logger.error("param does not exist")
return redirect("/param-invalid")
But its only going in to the logs/debugs/views.debug.log.
The logs/debugs/views.debug.log file
:
param_3
param does not exist
As you can see, both logger.debug
and logger.error
logged to the logs/debugs/views.debug.log
. I tried changing the logs/info/views.debug.log
file to logs/infos/views.info.log
and logs/error/views.error.log
to logs/error/views.error.log
but nothing changed.
I don't know why this is the behavior. I am new to Django. Please help.