summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/logger.py
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2023-12-19 23:58:57 +0100
committerRobert Honz <exislow+github@gmail.com>2023-12-19 23:58:57 +0100
commit0d4a9d6b8740035346d098f5bc28ebca64f6cd4d (patch)
treef52c9569509565e581b03b6e60fe32e611b79ad2 /tidal_dl_ng/logger.py
parent82a8fe96aa08903919a90a76030bacba9f93b8e0 (diff)
downloadtidal-dl-ng-0d4a9d6b8740035346d098f5bc28ebca64f6cd4d.tar.gz
🌟 Re-add all project files.
Diffstat (limited to 'tidal_dl_ng/logger.py')
-rw-r--r--tidal_dl_ng/logger.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/tidal_dl_ng/logger.py b/tidal_dl_ng/logger.py
new file mode 100644
index 0000000..83477a7
--- /dev/null
+++ b/tidal_dl_ng/logger.py
@@ -0,0 +1,65 @@
+import logging
+import sys
+
+import coloredlogs
+from PySide6 import QtCore
+
+
+class XStream(QtCore.QObject):
+ _stdout = None
+ _stderr = None
+ messageWritten = QtCore.Signal(str)
+
+ def flush(self):
+ pass
+
+ def fileno(self):
+ return -1
+
+ def write(self, msg):
+ if not self.signalsBlocked():
+ self.messageWritten.emit(msg)
+
+ @staticmethod
+ def stdout():
+ if not XStream._stdout:
+ XStream._stdout = XStream()
+ sys.stdout = XStream._stdout
+ return XStream._stdout
+
+ @staticmethod
+ def stderr():
+ if not XStream._stderr:
+ XStream._stderr = XStream()
+ sys.stderr = XStream._stderr
+ return XStream._stderr
+
+
+class QtHandler(logging.Handler):
+ def __init__(self):
+ logging.Handler.__init__(self)
+
+ def emit(self, record):
+ record = self.format(record)
+
+ if record:
+ # originally: XStream.stdout().write("{}\n".format(record))
+ XStream.stdout().write("%s\n" % record)
+
+
+logger_gui = logging.getLogger(__name__)
+handler_qt: QtHandler = QtHandler()
+# log_fmt: str = "[%(asctime)s] %(levelname)s: %(message)s"
+log_fmt: str = "> %(message)s"
+# formatter = logging.Formatter(log_fmt)
+formatter = coloredlogs.ColoredFormatter(fmt=log_fmt)
+handler_qt.setFormatter(formatter)
+logger_gui.addHandler(handler_qt)
+logger_gui.setLevel(logging.DEBUG)
+
+logger_cli = logging.getLogger(__name__)
+handler_stream: logging.StreamHandler = logging.StreamHandler()
+formatter = coloredlogs.ColoredFormatter(fmt=log_fmt)
+handler_stream.setFormatter(formatter)
+logger_cli.addHandler(handler_stream)
+logger_cli.setLevel(logging.DEBUG)