xend: improve the rotation of qemu-dm logfiles.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 1 Jul 2008 09:58:43 +0000 (10:58 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 1 Jul 2008 09:58:43 +0000 (10:58 +0100)
Signed-off-by: Yosuke Iwamatsu <y-iwamatsu@ab.jp.nec.com>
tools/examples/xend-config.sxp
tools/python/xen/xend/XendOptions.py
tools/python/xen/xend/image.py

index b6c5ceca2681d36e0522ea1b19e97cb507d79a81..5c1b6ec4463f75bd6e663017e53e72ab087f0917 100644 (file)
 
 # Script to run when the label of a resource has changed.
 #(resource-label-change-script '')
+
+# Rotation count of qemu-dm log file.
+#(qemu-dm-logrotate-count 10)
index aec8134be7bc5c3d2b284e3c085049dcc276f40b..707892f90e40217b112d6dc94704db9705a088d2 100644 (file)
@@ -132,6 +132,9 @@ class XendOptions:
     """Default script to configure a backend network interface"""
     vif_script = osdep.vif_script
 
+    """Default rotation count of qemu-dm log file."""
+    qemu_dm_logrotate_count = 10
+
     def __init__(self):
         self.configure()
 
@@ -351,6 +354,10 @@ class XendOptions:
     def get_vnc_x509_verify(self):
         return self.get_config_string('vnc-x509-verify', self.xend_vnc_x509_verify)
 
+    def get_qemu_dm_logrotate_count(self):
+        return self.get_config_int("qemu-dm-logrotate-count",
+                                   self.qemu_dm_logrotate_count)
+
 
 class XendOptionsFile(XendOptions):
 
index 5ee9a8d95f9524243b01413c917e939423070d18..4cf792fe88559a8671beb7a15b1188aeb0055265 100644 (file)
@@ -378,10 +378,18 @@ class ImageHandler:
         # keep track of pid and spawned options to kill it later
 
         self.logfile = "/var/log/xen/qemu-dm-%s.log" %  str(self.vm.info['name_label'])
-        if os.path.exists(self.logfile):
-            if os.path.exists(self.logfile + ".1"):
-                os.unlink(self.logfile + ".1")
-            os.rename(self.logfile, self.logfile + ".1")
+
+        # rotate log
+        logrotate_count = XendOptions.instance().get_qemu_dm_logrotate_count()
+        if logrotate_count > 0:
+            if os.path.exists("%s.%d" % (self.logfile, logrotate_count)):
+                os.unlink("%s.%d" % (self.logfile, logrotate_count))
+            for n in range(logrotate_count - 1, 0, -1):
+                if os.path.exists("%s.%d" % (self.logfile, n)):
+                    os.rename("%s.%d" % (self.logfile, n),
+                              "%s.%d" % (self.logfile, (n + 1)))
+            if os.path.exists(self.logfile):
+                os.rename(self.logfile, self.logfile + ".1")
 
         null = os.open("/dev/null", os.O_RDONLY)
         logfd = os.open(self.logfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC|os.O_APPEND)