Add a log handler for external python modules
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user