From eca20b701c411046e7ededb0462b310124ce3c18 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@users.noreply.github.com>
Date: Mon, 13 Apr 2015 10:21:32 +0200
Subject: Cleanup + fixup + new lib

---
 lib/colorlog/logging.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 lib/colorlog/logging.py

(limited to 'lib/colorlog/logging.py')

diff --git a/lib/colorlog/logging.py b/lib/colorlog/logging.py
new file mode 100644
index 000000000..13f0c4ffb
--- /dev/null
+++ b/lib/colorlog/logging.py
@@ -0,0 +1,44 @@
+"""Wrappers around the logging module."""
+
+from __future__ import absolute_import
+
+import functools
+import logging
+
+from colorlog.colorlog import ColoredFormatter
+
+BASIC_FORMAT = "%(log_color)s%(levelname)s%(reset)s:%(name)s:%(message)s"
+
+
+def basicConfig(**kwargs):
+    """Call ``logging.basicConfig`` and override the formatter it creates."""
+    logging.basicConfig(**kwargs)
+    logging._acquireLock()
+    try:
+        stream = logging.root.handlers[0]
+        stream.setFormatter(
+            ColoredFormatter(
+                fmt=kwargs.get('format', BASIC_FORMAT),
+                datefmt=kwargs.get('datefmt', None)))
+    finally:
+        logging._releaseLock()
+
+
+def ensure_configured(func):
+    """Modify a function to call ``basicConfig`` first if no handlers exist."""
+    @functools.wraps(func)
+    def wrapper(*args, **kwargs):
+        if len(logging.root.handlers) == 0:
+            basicConfig()
+        return func(*args, **kwargs)
+    return wrapper
+
+root = logging.root
+getLogger = logging.getLogger
+debug = ensure_configured(logging.debug)
+info = ensure_configured(logging.info)
+warning = ensure_configured(logging.warning)
+error = ensure_configured(logging.error)
+critical = ensure_configured(logging.critical)
+log = ensure_configured(logging.log)
+exception = ensure_configured(logging.exception)
-- 
cgit v1.2.3