[Kimchi-devel] [PATCH v2] Disabling screen log in production environment

Daniel Henrique Barboza danielhb at linux.vnet.ibm.com
Wed Oct 15 19:36:01 UTC 2014


When building kimchi's RPM, some messages are getting
logged in /var/log/messages because cherrypy is logging
in the standard output. This happens because a function
in FeatureTests is enabling log.screen regardless of the
current environment. This patch makes a verification that
prevents the screen log to be enabled in the production
environment.

Signed-off-by: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>
---
 src/kimchi/featuretests.py | 31 ++++++++++++++++---------------
 src/kimchi/server.py       |  6 +++++-
 2 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py
index c6f4687..f1eb8ae 100644
--- a/src/kimchi/featuretests.py
+++ b/src/kimchi/featuretests.py
@@ -80,30 +80,31 @@ SCSI_FC_XML = """
 class FeatureTests(object):
 
     @staticmethod
-    def disable_screen_error_logging():
+    def disable_libvirt_error_logging():
         def libvirt_errorhandler(userdata, error):
             # A libvirt error handler to ignore annoying messages in stderr
             pass
 
+        # Filter functions are enable only in production env
+        if cherrypy.config.get('environment') != 'production':
+            return
         # Register the error handler to hide libvirt error in stderr
         libvirt.registerErrorHandler(f=libvirt_errorhandler, ctx=None)
-        # Disable cherrypy screen logging, in order to log errors on kimchi
-        # file without displaying them on screen
-        cherrypy.log.screen = False
 
     @staticmethod
-    def enable_screen_error_logging():
+    def enable_libvirt_error_logging():
+        # Filter functions are enable only in production env
+        if cherrypy.config.get('environment') != 'production':
+            return
         # Unregister the error handler
         libvirt.registerErrorHandler(f=None, ctx=None)
-        # Enable cherrypy screen logging
-        cherrypy.log.screen = True
 
     @staticmethod
     def libvirt_supports_iso_stream(protocol):
         xml = ISO_STREAM_XML % {'protocol': protocol}
         conn = None
         try:
-            FeatureTests.disable_screen_error_logging()
+            FeatureTests.disable_libvirt_error_logging()
             conn = libvirt.open(None)
             dom = conn.defineXML(xml)
             dom.undefine()
@@ -112,7 +113,7 @@ class FeatureTests(object):
             kimchi_log.error(e.message)
             return False
         finally:
-            FeatureTests.enable_screen_error_logging()
+            FeatureTests.enable_libvirt_error_logging()
             conn is None or conn.close()
 
     @staticmethod
@@ -123,7 +124,7 @@ class FeatureTests(object):
             return xml
         try:
             conn = libvirt.open(None)
-            FeatureTests.disable_screen_error_logging()
+            FeatureTests.disable_libvirt_error_logging()
             conn.findStoragePoolSources('netfs', _get_xml(), 0)
         except libvirt.libvirtError as e:
             kimchi_log.error(e.message)
@@ -132,7 +133,7 @@ class FeatureTests(object):
                 # it returns 38--general system call failure
                 return False
         finally:
-            FeatureTests.enable_screen_error_logging()
+            FeatureTests.enable_libvirt_error_logging()
             conn is None or conn.close()
 
         return True
@@ -173,7 +174,7 @@ class FeatureTests(object):
     @staticmethod
     def libvirt_support_fc_host():
         try:
-            FeatureTests.disable_screen_error_logging()
+            FeatureTests.disable_libvirt_error_logging()
             conn = libvirt.open(None)
             pool = None
             pool = conn.storagePoolDefineXML(SCSI_FC_XML, 0)
@@ -182,7 +183,7 @@ class FeatureTests(object):
                 # Libvirt requires adapter name, not needed when supports to FC
                 return False
         finally:
-            FeatureTests.enable_screen_error_logging()
+            FeatureTests.enable_libvirt_error_logging()
             pool is None or pool.undefine()
             conn is None or conn.close()
         return True
@@ -192,8 +193,8 @@ class FeatureTests(object):
         KIMCHI_META_URL = "https://github.com/kimchi-project/kimchi/"
         KIMCHI_NAMESPACE = "kimchi"
         with RollbackContext() as rollback:
-            FeatureTests.disable_screen_error_logging()
-            rollback.prependDefer(FeatureTests.enable_screen_error_logging)
+            FeatureTests.disable_libvirt_error_logging()
+            rollback.prependDefer(FeatureTests.enable_libvirt_error_logging)
             conn = libvirt.open(None)
             rollback.prependDefer(conn.close)
             dom = conn.defineXML(SIMPLE_VM_XML)
diff --git a/src/kimchi/server.py b/src/kimchi/server.py
index 8d166e5..6cc7143 100644
--- a/src/kimchi/server.py
+++ b/src/kimchi/server.py
@@ -91,13 +91,17 @@ class Server(object):
         max_body_size_in_bytes = eval(options.max_body_size) * 1024
         cherrypy.server.max_request_body_size = max_body_size_in_bytes
 
-        cherrypy.log.screen = True
         cherrypy.log.access_file = options.access_log
         cherrypy.log.error_file = options.error_log
 
         logLevel = LOGGING_LEVEL.get(options.log_level, logging.DEBUG)
         dev_env = options.environment != 'production'
 
+        # Enable cherrypy screen logging if running environment
+        # is not 'production'
+        if dev_env:
+            cherrypy.log.screen = True
+
         # Create handler to rotate access log file
         h = logging.handlers.RotatingFileHandler(options.access_log, 'a',
                                                  10000000, 1000)
-- 
1.8.3.1




More information about the Kimchi-devel mailing list