mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 15:36:27 +00:00
33 lines
813 B
Python
33 lines
813 B
Python
![]() |
import logging
|
||
|
|
||
|
|
||
|
class LogForwarder(logging.Handler):
|
||
|
|
||
|
def __init__(self, level=logging.NOTSET):
|
||
|
self.server = None
|
||
|
super(LogForwarder, self).__init__(level)
|
||
|
|
||
|
def set_server(self, server):
|
||
|
self.server = server
|
||
|
|
||
|
def emit(self, record):
|
||
|
if self.server is not None:
|
||
|
if record.exc_info is not None:
|
||
|
import traceback
|
||
|
exc_type, exc_value, exc_traceback = record.exc_info
|
||
|
record.exc_info = traceback.print_exception(exc_type, exc_value, exc_traceback)
|
||
|
# TODO: Use serpent instead
|
||
|
import pickle
|
||
|
self.server.handle(pickle.dumps(record))
|
||
|
|
||
|
|
||
|
class LogServer(object):
|
||
|
|
||
|
def handle(self, pickled_record):
|
||
|
import pickle
|
||
|
record = pickle.loads(pickled_record)
|
||
|
log = logging.getLogger()
|
||
|
record.extra = getattr(record, 'extra', {})
|
||
|
record.extra['source'] = 'remote'
|
||
|
log.handle(record)
|