Skip to content

Instantly share code, notes, and snippets.

@mdeous
Last active January 14, 2016 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mdeous/06983c2865d5a4a709f2 to your computer and use it in GitHub Desktop.
Save mdeous/06983c2865d5a4a709f2 to your computer and use it in GitHub Desktop.
Logging formatter guessing automagically from where the log call was made
import inspect
import logging
class MagicFormatter(logging.Formatter):
def format(self, record):
# extract frame from which the logging call was made
caller_frame = inspect.stack()[8]
# extract name of module from frame
record.name = inspect.getmodule(caller_frame[0]).__name__
# extract name of function from frame (if call wasn't made from module's top level)
func_name = caller_frame[3]
if func_name != '<module>':
record.name += ('.' + func_name)
return super(MagicFormatter, self).format(record)
def logger_init():
# logging
logger = logging.getLogger()
logger.setLevel(config.loglevel)
formatter = MagicFormatter('%(levelname)s [%(name)s] %(asctime)s - %(message)s')
# log to stdout/stderr
stream_handler = logging.StreamHandler()
stream_handler.setLevel(config.loglevel)
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
return logger
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment