summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurelien Campeas <aurelien.campeas@logilab.fr>2012-11-13 14:11:33 +0100
committerAurelien Campeas <aurelien.campeas@logilab.fr>2012-11-13 14:11:33 +0100
commit550ba6db7a6c7b72dde28b533838fb3ab4cd19f8 (patch)
tree53b11d9ab6d28d3d11b646fa63d7b6bccb4023bf
parent9fc4653fc67300e02b0d0a0ecd2fb4fe647780ab (diff)
downloadlogilab-common-550ba6db7a6c7b72dde28b533838fb3ab4cd19f8.tar.gz
[loggin ext] provide colored output under windows if colorama is available (closes #107436)
-rw-r--r--ChangeLog3
-rw-r--r--__pkginfo__.py6
-rw-r--r--logging_ext.py15
3 files changed, 21 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index bffa78b..03d3540 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
ChangeLog for logilab.common
============================
+--
+ * loggin_ext: on windows, use colorama to display colored logs, if available (closes #107436)
+
2012-11-14 -- 0.58.3
* date: fix ustrftime() impl. for python3 (closes #82161, patch by Arfrever
Frehtes Taifersar Arahesis) and encoding detection for python2 (closes
diff --git a/__pkginfo__.py b/__pkginfo__.py
index 5f47663..78b7757 100644
--- a/__pkginfo__.py
+++ b/__pkginfo__.py
@@ -18,6 +18,7 @@
"""logilab.common packaging information"""
__docformat__ = "restructuredtext en"
import sys
+import os
distname = 'logilab-common'
modname = 'common'
@@ -40,8 +41,11 @@ from os.path import join
scripts = [join('bin', 'pytest')]
include_dirs = [join('test', 'data')]
+install_requires = []
if sys.version_info < (2, 7):
- install_requires = ['unittest2 >= 0.5.1']
+ install_requires.append('unittest2 >= 0.5.1')
+if os.name == 'nt':
+ install_requires.append('colorama')
classifiers = ["Topic :: Utilities",
"Programming Language :: Python",
diff --git a/logging_ext.py b/logging_ext.py
index 1b7a1e6..e4d2490 100644
--- a/logging_ext.py
+++ b/logging_ext.py
@@ -132,9 +132,20 @@ def get_threshold(debug=False, logthreshold=None):
logthreshold))
return logthreshold
-def get_formatter(logformat=LOG_FORMAT, logdateformat=LOG_DATE_FORMAT):
+def _colorable_terminal():
isatty = hasattr(sys.__stdout__, 'isatty') and sys.__stdout__.isatty()
- if isatty and sys.platform != 'win32':
+ if not isatty:
+ return False
+ if os.name == 'nt':
+ try:
+ from colorama import init as init_win32_colors
+ except ImportError:
+ return False
+ init_win32_colors()
+ return True
+
+def get_formatter(logformat=LOG_FORMAT, logdateformat=LOG_DATE_FORMAT):
+ if _colorable_terminal():
fmt = ColorFormatter(logformat, logdateformat)
def col_fact(record):
if 'XXX' in record.message: