Land #9739, Add Python logging module support
This commit is contained in:
commit
bb8fd45cb2
|
@ -1,8 +1,43 @@
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
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'):
|
def log(message, level='info'):
|
||||||
rpc_send({'jsonrpc': '2.0', 'method': 'message', 'params': {
|
rpc_send({'jsonrpc': '2.0', 'method': 'message', 'params': {
|
||||||
'level': level,
|
'level': level,
|
||||||
|
|
Loading…
Reference in New Issue