Logging
Logging
Scout logs via the built-in Python logger, which means you can add a handler to the scout_apm
package. If you don’t setup logging, use the examples below as a starting point.
Log Levels
The following log levels are available:
- CRITICAL
- ERROR
- WARNING
- INFO
- DEBUG
Django Logging
To log Scout agent output in your Django application, copy the following into your settings.py
file:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'stdout': {
'format': '%(asctime)s %(levelname)s %(message)s',
'datefmt': '%Y-%m-%dT%H:%M:%S%z',
},
},
'handlers': {
'stdout': {
'class': 'logging.StreamHandler',
'formatter': 'stdout',
},
'scout_apm': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'scout_apm_debug.log',
},
},
'root': {
'handlers': ['stdout'],
'level': os.environ.get('LOG_LEVEL', 'DEBUG'),
},
'loggers': {
'scout_apm': {
'handlers': ['scout_apm'],
'level': 'DEBUG',
'propagate': True,
},
},
}
Flask Logging
Add the following your Flask app:
dictConfig({
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'stdout': {
'format': '%(asctime)s %(levelname)s %(message)s',
'datefmt': '%Y-%m-%dT%H:%M:%S%z',
},
},
'handlers': {
'stdout': {
'class': 'logging.StreamHandler',
'formatter': 'stdout',
},
'scout_apm': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'scout_apm_debug.log',
},
},
'root': {
'handlers': ['stdout'],
'level': os.environ.get('LOG_LEVEL', 'DEBUG'),
},
'loggers': {
'scout_apm': {
'handlers': ['scout_apm'],
'level': 'DEBUG',
'propagate': True,
},
},
})
If LOGGING
is already defined, merge the above into the existing Dictionary.
Celery Logging
Add the following to our default Celery configuration:
import logging
logging.basicConfig(level='DEBUG')
Custom Instrumentation logging
If you’ve custom Scout instrumentation, add the following to record the agent logs:
import logging
logging.basicConfig(level='DEBUG')