Accumulate logs during setup
authorJeremy Stanley <fungi@yuggoth.org>
Mon, 13 Oct 2014 03:12:08 +0000 (03:12 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Mon, 13 Oct 2014 03:12:08 +0000 (03:12 +0000)
Prior to existence of the global universe, the destination files for
logging may not be known. Accumulate log entries during
Universe.load() and then flush them once it's safe to do so.

lib/mudpy/misc.py

index 2bec9bf..8e747dd 100644 (file)
@@ -384,11 +384,15 @@ class Universe:
             filename = os.path.join(self.startdir, filename)
         self.filename = filename
         if load:
-            self.load()
+            # make sure to preserve any accumulated log entries during load
+            self.setup_loglines += self.load()
 
     def load(self):
         """Load universe data from persistent storage."""
 
+        # it's possible for this to enter before logging configuration is read
+        pending_loglines = []
+
         # the files dict must exist and filename needs to be read-only
         if not hasattr(
            self, "files"
@@ -432,6 +436,7 @@ class Universe:
         for element in self.contents.values():
             element.update_location()
             element.clean_contents()
+        return pending_loglines
 
     def new(self):
         """Create a new, empty Universe (the Big Bang)."""
@@ -2456,6 +2461,11 @@ def setup():
     global universe
     universe = Universe(conffile, True)
 
+    # report any loglines which accumulated during setup
+    for logline in universe.setup_loglines:
+        log(*logline)
+    universe.setup_loglines = []
+
     # log an initial message
     log("Started mudpy with command line: " + " ".join(sys.argv))