Land #9739, Add Python logging module support
This commit is contained in:
commit
bb8fd45cb2
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue