logging: handle newlines in messages

This commit is contained in:
Sebastien Bourdeauducq 2015-10-17 10:21:03 +08:00
parent 6c856025cc
commit f6fd7ecef2
2 changed files with 10 additions and 6 deletions

View File

@ -24,7 +24,9 @@ class LogBufferHandler(logging.Handler):
def emit(self, record):
message = self.format(record)
self.log_buffer.log(record.levelno, record.source, record.created, message)
for part in message.split("\n"):
self.log_buffer.log(record.levelno, record.source, record.created,
part)
def log_worker(rid, message):

View File

@ -101,16 +101,18 @@ class LogForwarder(logging.Handler, TaskObject):
self.host = host
self.port = port
self.setFormatter(logging.Formatter(
"%(source)s:%(levelno)d:%(name)s:%(message)s"))
"%(name)s:%(message)s"))
self._queue = asyncio.Queue(queue_size)
self.reconnect_timer = reconnect_timer
def emit(self, record):
message = self.format(record)
try:
self._queue.put_nowait(message)
except asyncio.QueueFull:
pass
for part in message.split("\n"):
part = "{}:{}:{}".format(record.source, record.levelno, part)
try:
self._queue.put_nowait(part)
except asyncio.QueueFull:
break
async def _do(self):
while True: