Created
September 26, 2013 01:11
-
-
Save minskmaz/6708498 to your computer and use it in GitHub Desktop.
TWISTED LOGGING WITH PYTHON LOGGING LEVELS
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
import twisted | |
import logging | |
from twisted.python import log | |
### http://stackoverflow.com/questions/13748222/twisted-log-level-switch | |
class LevelFileLogObserver(log.FileLogObserver): | |
def __init__(self, f, level=logging.INFO): | |
log.FileLogObserver.__init__(self, f) | |
self.logLevel = level | |
def emit(self, eventDict): | |
if eventDict['isError']: | |
level = logging.ERROR | |
elif 'level' in eventDict: | |
level = eventDict['level'] | |
else: | |
level = logging.INFO | |
if level == self.logLevel: | |
log.FileLogObserver.emit(self, eventDict) | |
#---------------------------------------------------------------------# | |
# USAGE OF LevelFileLogObserver # | |
#---------------------------------------------------------------------# | |
# THIS IS YOUR TAP.py FILE! | |
# mode is whatever the arbitrary 'mode' you set your twistd process in | |
# this way various twistds don't write into each other's logs | |
#IF THE LOGS DIRECTORY FOR THIS MODE DOESN'T EXIST CREATE IT | |
logs_dir = '/tmp/logs/%s/'%(mode) | |
if not os.path.exists(logs_dir): | |
os.makedirs(logs_dir) | |
# THE PYTHON LIBRARY LOG LEVELS | |
levels = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] | |
# GENERATE LOGFILES PER SERVER PER LOG LEVEL | |
for level in levels: | |
levlog = logfile.LogFile( | |
"%s_%s.log"%(mode, level.lower()), | |
logs_dir, rotateLength=100000, | |
maxRotatedFiles=100 | |
) | |
# LevelFileLogObserver ROUTES LOG MESSAGES TO | |
logr = LevelFileLogObserver(levlog, level=getattr(logging, level)) | |
twisted.python.log.addObserver(logr.emit) | |
# TEST EACH OF THE LOGS | |
log.msg('the level of this message is INFO', | |
level=logging.INFO) | |
log.msg('the level of this message is DEBUG', | |
level=logging.DEBUG) | |
log.msg('the level of this message is WARNING', | |
level=logging.WARNING) | |
log.msg('the level of this message is ERROR', | |
level=logging.ERROR) | |
log.msg('the level of this message is CRITICAL', | |
level=logging.CRITICAL) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment