diff env/lib/python3.9/site-packages/ephemeris/ephemeris_log.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/ephemeris/ephemeris_log.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,62 @@
+import logging
+import tempfile
+
+
+class ProgressConsoleHandler(logging.StreamHandler):
+    """
+    A handler class which allows the cursor to stay on
+    one line for selected messages
+    """
+    on_same_line = False
+
+    def emit(self, record):
+        try:
+            msg = self.format(record)
+            stream = self.stream
+            same_line = hasattr(record, 'same_line')
+            if self.on_same_line and not same_line:
+                stream.write('\r\n')
+            stream.write(msg)
+            if same_line:
+                stream.write('.')
+                self.on_same_line = True
+            else:
+                stream.write('\r\n')
+                self.on_same_line = False
+            self.flush()
+        except (KeyboardInterrupt, SystemExit):
+            raise
+        except Exception:
+            self.handleError(record)
+
+
+def disable_external_library_logging():
+    # Omit (most of the) logging by external libraries
+    logging.getLogger('bioblend').setLevel(logging.ERROR)
+    logging.getLogger('requests').setLevel(logging.ERROR)
+    try:
+        logging.captureWarnings(True)  # Capture HTTPS warngings from urllib3
+    except AttributeError:
+        pass
+
+
+def setup_global_logger(name, log_file=None):
+    formatter = logging.Formatter('%(asctime)s %(levelname)-5s - %(message)s')
+    progress = ProgressConsoleHandler()
+    console = logging.StreamHandler()
+    console.setFormatter(formatter)
+
+    logger = logging.getLogger(name)
+    logger.setLevel(logging.DEBUG)
+    logger.addHandler(progress)
+
+    if not log_file:
+        # delete = false is chosen here because it is always nice to have a log file
+        # ready if you need to debug. Not having the "if only I had set a log file"
+        # moment after the fact.
+        temp = tempfile.NamedTemporaryFile(prefix="ephemeris_", delete=False)
+        log_file = temp.name
+    file_handler = logging.FileHandler(log_file)
+    logger.addHandler(file_handler)
+    logger.info("Storing log file in: {0}".format(log_file))
+    return logger