[Zodb-checkins] CVS: ZODB3/zLOG - MinimalLogger.py:1.14

Guido van Rossum guido@python.org
Thu, 12 Sep 2002 14:52:08 -0400


Update of /cvs-repository/ZODB3/zLOG
In directory cvs.zope.org:/tmp/cvs-serv22362

Modified Files:
	MinimalLogger.py 
Log Message:
Change log() to cause exactly one write() call to _log_dest.  This
should fix the problem that messages from different processes or
threads could be intermingled.  The code was rewritten to build up the
lines of the error message in a list which is joined by "\n"
characters at the end.


=== ZODB3/zLOG/MinimalLogger.py 1.13 => 1.14 ===
--- ZODB3/zLOG/MinimalLogger.py:1.13	Fri Aug 16 16:28:45 2002
+++ ZODB3/zLOG/MinimalLogger.py	Thu Sep 12 14:52:07 2002
@@ -75,24 +75,24 @@
     def log(self, subsystem, severity, summary, detail, error):
         if _log_dest is None or severity < _log_level:
             return
+        buf = ["------",
+               "%s %s %s %s" %
+               (log_time(), severity_string(severity), subsystem, summary)]
 
         if detail:
-            buf = ("------\n"
-                   "%s %s %s %s\n%s" % (log_time(), severity_string(severity),
-                                        subsystem, summary, detail))
-        else:
-            buf = ("------\n"
-                   "%s %s %s %s" % (log_time(), severity_string(severity),
-                                    subsystem, summary))
-        print >> _log_dest, buf
+            buf.append(str(detail))
 
         if error:
             try:
                 lines = format_exception(error[0], error[1], error[2],
                                          limit=100)
-                print >> _log_dest, ''.join(lines)
-            except:
-                print >> _log_dest, "%s: %s" % error[:2]
+                buf.append(''.join(lines))
+            except '':
+                buf.append("%s: %s" % error[:2])
+
+        buf.append("") # Cause a final \n to be appended
+
+        _log_dest.write("\n".join(buf))
         _log_dest.flush()