Created
August 22, 2013 17:32
-
-
Save agness/6310316 to your computer and use it in GitHub Desktop.
Logging in Python with Tornado's pretty print formatter and routing all messages with INFO level and above to STDOUT, and all messages below to STDERR.
This file contains 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
#!/usr/bin/env python | |
import sys | |
import logging | |
import tornado.log | |
# For pretty log messages, if available | |
try: | |
import curses | |
except ImportError: | |
curses = None | |
class _SingleLevelFilter(logging.Filter): | |
def __init__(self, passlevel, reject): | |
self.passlevel = passlevel | |
self.reject = reject | |
def filter(self, record): | |
if self.reject: | |
return (record.levelno != self.passlevel) | |
else: | |
return (record.levelno == self.passlevel) | |
def setup_custom_logging(): | |
color = False | |
if curses and sys.stderr.isatty(): | |
try: | |
curses.setupterm() | |
if curses.tigetnum("colors") > 0: | |
color = True | |
except Exception: | |
pass | |
h1 = logging.StreamHandler(sys.stdout) | |
h1.setFormatter(tornado.log.LogFormatter(color=color)) | |
f1 = _SingleLevelFilter(logging.INFO, False) | |
h1.addFilter(f1) | |
rootLogger = logging.getLogger() | |
rootLogger.addHandler(h1) | |
h2 = logging.StreamHandler(sys.stderr) | |
h2.setFormatter(tornado.log.LogFormatter(color=color)) | |
f2 = _SingleLevelFilter(logging.INFO, True) | |
h2.addFilter(f2) | |
rootLogger.addHandler(h2) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment