Author: jure
Date: Mon Feb 18 13:53:53 2013
New Revision: 1447258

URL: http://svn.apache.org/r1447258
Log:
#355, enhanced reuse of product environment logger, patch 
t355_r1446579_product_env_logging_inherit.diff applied (from Olemis)


Modified:
    
incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py

Modified: 
incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py
URL: 
http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py?rev=1447258&r1=1447257&r2=1447258&view=diff
==============================================================================
--- 
incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py
 (original)
+++ 
incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py
 Mon Feb 18 13:53:53 2013
@@ -551,29 +551,40 @@ class ProductEnvironment(Component, Comp
         """Initialize the logging sub-system."""
         from trac.log import logger_handler_factory
         logtype = self.log_type
+        logfile = self.log_file
+        format = self.log_format
+
         self.parent.log.debug("Log type '%s' for product '%s'", 
                 logtype, self.product.prefix)
+
+        # Force logger inheritance on identical configuration
+        if (logtype, logfile, format) == (self.parent.log_type, 
+                self.parent.log_file, self.parent.log_format):
+            logtype = 'inherit'
+
         if logtype == 'inherit':
-            logtype = self.parent.log_type
-            logfile = self.parent.log_file
-            format = self.parent.log_format
+            self.log = self.parent.log
+            self._log_handler = self.parent._log_handler
+            self.parent.log.warning("Inheriting parent logger for product 
'%s'",
+                    self.product.prefix)
         else:
-            logfile = self.log_file
-            format = self.log_format
-        if logtype == 'file' and not os.path.isabs(logfile):
-            logfile = os.path.join(self.get_log_dir(), logfile)
-        logid = 'Trac.%s.%s' % \
-                (sha1(self.parent.path).hexdigest(), self.product.prefix)
-        if format:
-            format = format.replace('$(', '%(') \
-                     .replace('%(path)s', self.path) \
-                     .replace('%(basename)s', os.path.basename(self.path)) \
-                     .replace('%(project)s', self.project_name)
-        self.log, self._log_handler = logger_handler_factory(
-            logtype, logfile, self.log_level, logid, format=format)
+            if logtype == 'file' and not os.path.isabs(logfile):
+                logfile = os.path.join(self.get_log_dir(), logfile)
+            logid = 'Trac.%s.%s' % \
+                    (sha1(self.parent.path).hexdigest(), self.product.prefix)
+            if format:
+                format = format.replace('$(', '%(') \
+                         .replace('%(path)s', self.path) \
+                         .replace('%(basename)s', os.path.basename(self.path)) 
\
+                         .replace('%(project)s', self.project_name)
+            self.log, self._log_handler = logger_handler_factory(
+                logtype, logfile, self.log_level, logid, format=format)
 
         from trac import core, __version__ as VERSION
-        self.log.info('-' * 32 + ' environment startup [Trac %s] ' + '-' * 32,
+        self.log.info('-' * 32 + 
+                        ' product %s environment startup [Trac %s] ' + 
+                        '-' * 32,
+                      self.product.prefix,
                       get_pkginfo(core).get('version', VERSION))
 
     def needs_upgrade(self):


Reply via email to