Skip to content

Instantly share code, notes, and snippets.

@stefanooldeman
Last active December 15, 2015 09:39
Show Gist options
  • Save stefanooldeman/5239952 to your computer and use it in GitHub Desktop.
Save stefanooldeman/5239952 to your computer and use it in GitHub Desktop.
Working example of python's logging module, configured from python dict. have fun.
import logging
import logging.config
console = {
'class': 'logging.StreamHandler',
'formatter': 'console',
'level': 'NOTSET', # log everything!!
}
logfile = {
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'file-format',
'filename': 'logconfig.log',
'level': 'INFO',
}
syslog = {
'class': 'logging.handlers.SysLogHandler',
'address': '/dev/log',
'facility': 'local6',
'formatter': 'syslog-ng',
'level': 'INFO',
}
loggers_config = {
'version': 1,
'formatters': {
'console': {
'format': '[%(levelname)s] from %(name)s: %(message)s ',
},
'file-format': {
'format': '%(asctime)s,%(name)s,%(levelname)s,%(message)s',
'datafmt': "%m-%d %H:%M'"
},
},
'handlers': {'console': console, 'file': logfile, 'syslog': syslog},
'loggers': {
# note the level important here, overwrite per handler
'myns.app': {
'handlers': ['console', 'file'],
'level': 'DEBUG'
},
'myns.lib': {
'handlers': ['console', 'file'],
'level': 'WARN',
},
}
}
logging.config.dictConfigClass(loggers_config).configure()
logger = logging.getLogger('lib.core')
# 'application' code
logger.info('all finished YEAH!')
logger.debug('lol this should never happen! (this message is for all the devs)')
logger.warn('the heartbeat was silent for 5 seconds')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment