Created
April 21, 2018 14:36
-
-
Save after-the-sunrise/751035b06738302ad920adf8bdce0a3f to your computer and use it in GitHub Desktop.
Python logging formatter with multiple formatters per logging level.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from logging import getLogger, Formatter, StreamHandler, DEBUG, ERROR | |
class LeveledFormatter(Formatter): | |
_formats = {} | |
def __init__(self, *args, **kwargs): | |
super(LeveledFormatter, self).__init__(*args, **kwargs) | |
def set_formatter(self, level, formatter): | |
self._formats[level] = formatter | |
def format(self, record): | |
f = self._formats.get(record.levelno) | |
if f is None: | |
f = super(LeveledFormatter, self) | |
return f.format(record) | |
if __name__ == '__main__': | |
formatter = LeveledFormatter('??? %(message)s') | |
formatter.set_formatter(DEBUG, Formatter('DBG %(message)s')) | |
formatter.set_formatter(ERROR, Formatter('ERR %(message)s')) | |
handler = StreamHandler() | |
handler.setFormatter(formatter) | |
logger = getLogger(__name__) | |
logger.setLevel(DEBUG) | |
logger.addHandler(handler) | |
logger.debug('foo') | |
logger.info('bar') | |
logger.warning('hoge') | |
logger.error('piyo') | |
# [Output] | |
# DBG foo | |
# ??? bar | |
# ??? hoge | |
# ERR piyo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment