aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2018-12-10 13:18:15 +0000
committerGravatar jesopo2018-12-10 13:18:15 +0000
commitdf8135f105f637b3770f6548fe23958e6b10aa10 (patch)
tree55478a7257cff9a4e26a44020314e1022f409ca7 /src
parentUse more distinctive arrow characters for youtube up/down votes (diff)
signature
Put logging functionality on to it's own thread
Diffstat (limited to 'src')
-rw-r--r--src/Logging.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/Logging.py b/src/Logging.py
index 0b934de4..963860dc 100644
--- a/src/Logging.py
+++ b/src/Logging.py
@@ -1,4 +1,4 @@
-import logging, logging.handlers, os, sys, time, typing
+import logging, logging.handlers, os, queue, sys, threading, time, typing
LEVELS = {
"trace": logging.DEBUG-1,
@@ -54,6 +54,16 @@ class Log(object):
warn_handler.setFormatter(formatter)
self.logger.addHandler(warn_handler)
+ self._queue = queue.Queue()
+ self._thread = threading.Thread(target=self._loop)
+ self._thread.daemon = True
+ self._thread.start()
+
+ def _loop(self):
+ while True:
+ message, params, level, kwargs = self._queue.get(block=True)
+ self.logger.log(level, message, *params, **kwargs)
+
def trace(self, message: str, params: typing.List, **kwargs):
self._log(message, params, LEVELS["trace"], kwargs)
def debug(self, message: str, params: typing.List, **kwargs):
@@ -67,4 +77,4 @@ class Log(object):
def critical(self, message: str, params: typing.List, **kwargs):
self._log(message, params, logging.CRITICAL, kwargs)
def _log(self, message: str, params: typing.List, level: int, kwargs: dict):
- self.logger.log(level, message, *params, **kwargs)
+ self._queue.put((message, params, level, kwargs))