Logging in Django on Heroku not appearing
Your Procfile is probably at fault here:
If you want to have gunicorn log to stdout you have to use the --logfile=-
command line option (you are missing the =
!) according to this answer.
So your entire Procfile should look like this:
web: gunicorn myapp.wsgi --log-file=-
EDIT:
Since print statements are working for you, but logging is not, your logging setup is probably at fault. Make sure that you set up logging during the startup of your app (where are you calling dictConfig in your code?):
import logging
logging.config.dictConfig(LOGGING)
logger = logging.getLogger('MYAPP')
logger.info("Just testing")
Your Procfile
and LOGGING
configuration looks fine. Django configures the logger just before the apps are imported, so if you try to log even before than (for. e.g. from settings.py file), it will not work.
EDIT:
LOGGING
config:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ('%(asctime)s [%(process)d] [%(levelname)s] '
'pathname=%(pathname)s lineno=%(lineno)s '
'funcname=%(funcName)s %(message)s'),
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'ex_logger': {
'handlers': ['console', ],
'level': 'INFO',
}
}
}
adding following to settings.py
won't log:
import logging
logger = logging.getLogger('ex_logger')
logger.info("core.settings logger") # won't work
adding to views.py
should log:
from django.http import HttpResponse
import logging
logger = logging.getLogger('ex_logger')
logger.info("core.views logger") # should work
def url_please(request):
logger.info("path: %s" % request.path) # should work
return HttpResponse(request.path)