diff src/core/log_config.py @ 2089:0931b5a6213c

core, quick_frontends: android compatibility hacks: a couple of hacks have been used so backend can be launched on android using kivy - config file (sat.conf) is been read on a specific dir, using a detection of Cagou domains in constants.py - fixed crash when using sys.stdout.isatty in log_config.py - Q&D fix for logging encoding issue on android - when android is detected, the path/pattern to load plugins is modified - SRV is not working at the moment on android. If the platform is detected, the host is used directly with default port. A hosts_dir configuration can be used in [android] section to map a specific ip to a host - getRepositoryData in tools/utils return constant string on android. Proper repository data need to be copied during package building. - [quick app] more robust failure handling on asyncConnect error - [quick chat] default to utf-8 when getlocale doesn't return the actual locale.
author Goffi <goffi@goffi.org>
date Sun, 04 Dec 2016 18:16:48 +0100
parents 7f053e1f0b67
children 8b37a62336c3
line wrap: on
line diff
--- a/src/core/log_config.py	Sun Dec 04 18:16:37 2016 +0100
+++ b/src/core/log_config.py	Sun Dec 04 18:16:48 2016 +0100
@@ -47,7 +47,11 @@
         super(ConfigureBasic, self).configureColors(colors, force_colors, levels_taints_dict)
         if colors:
             import sys
-            if force_colors or sys.stdout.isatty(): # FIXME: isatty should be tested on each handler, not globaly
+            try:
+                isatty = sys.stdout.isatty()
+            except AttributeError:
+                isatty = False
+            if force_colors or isatty: # FIXME: isatty should be tested on each handler, not globaly
                 # we need colors
                 log.Logger.post_treat = lambda logger, level, message: self.ansiColors(level, message)
         elif force_colors:
@@ -262,6 +266,7 @@
     def configureFormat(self, fmt):
         super(ConfigureStandard, self).configureFormat(fmt)
         import logging
+        import sys
 
         class SatFormatter(logging.Formatter):
             u"""Formatter which manage SàT specificities"""
@@ -287,7 +292,12 @@
                 s = super(SatFormatter, self).format(record)
                 if do_color:
                     s = ConfigureStandard.ansiColors(record.levelname, s)
-                return s
+                if sys.platform == "android":
+                    # FIXME: dirty hack to workaround android encoding issue on log
+                    #        need to be fixed properly
+                    return s.encode('ascii', 'ignore')
+                else:
+                    return s
 
         self.formatterClass = SatFormatter