Land #9739, Add Python logging module support

This commit is contained in:
Adam Cammack 2018-03-21 14:48:49 -05:00
commit bb8fd45cb2
No known key found for this signature in database
GPG Key ID: C9378BA088092D66
1 changed files with 35 additions and 0 deletions

View File

@ -1,8 +1,43 @@
import json
import logging
import os
import sys
class LogFormatter(logging.Formatter):
def __init__(self, prefix, *args, **kwargs):
super(LogFormatter, self).__init__(*args, **kwargs)
self.prefix = prefix
def format(self, record):
return self.prefix + record.msg
class LogHandler(logging.Handler):
def emit(self, record):
level = 'debug'
if record.levelno >= logging.ERROR:
level = 'error'
elif record.levelno >= logging.WARNING:
level = 'warning'
elif record.levelno >= logging.INFO:
level = 'info'
log(self.format(record), level)
return
@classmethod
def setup(cls, level=logging.DEBUG, name=None, msg_prefix=None):
logger = logging.getLogger(name)
handler = cls()
if level is not None:
logger.setLevel(level)
if msg_prefix is not None:
handler.setFormatter(LogFormatter(msg_prefix))
logger.addHandler(handler)
return handler
def log(message, level='info'):
rpc_send({'jsonrpc': '2.0', 'method': 'message', 'params': {
'level': level,