[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Set close-on-exec flag on /var/log/xend.log logging file.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Node ID 939f75570a15af51bb4173cb7fa945a86414431a # Parent 5db6984e4503a6ddf2cb0db58c5af189d70f1f78 Set close-on-exec flag on /var/log/xend.log logging file. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- tools/python/xen/xend/XendLogging.py | 28 +++++++++++++++++++++++++--- 1 files changed, 25 insertions(+), 3 deletions(-) diff -r 5db6984e4503 -r 939f75570a15 tools/python/xen/xend/XendLogging.py --- a/tools/python/xen/xend/XendLogging.py Tue Aug 15 16:26:39 2006 +0100 +++ b/tools/python/xen/xend/XendLogging.py Tue Aug 15 16:27:26 2006 +0100 @@ -21,6 +21,7 @@ import types import types import logging import logging.handlers +import fcntl from xen.xend.server import params @@ -49,6 +50,27 @@ DATE_FORMAT = "%Y-%m-%d %H:%M:%S" logfilename = None +class XendRotatingFileHandler(logging.handlers.RotatingFileHandler): + + def __init__(self, fname, mode, maxBytes, backupCount): + logging.handlers.RotatingFileHandler.__init__(self, fname, mode, maxBytes, backupCount) + self.setCloseOnExec() + + def doRollover(self): + logging.handlers.RotatingFileHandler.doRollover() + self.setCloseOnExec() + + # NB yes accessing 'self.stream' violates OO encapsulation somewhat, + # but python logging API gives no other way to access the file handle + # and the entire python logging stack is already full of OO encapsulation + # violations. The other alternative is copy-and-paste duplicating the + # entire FileHandler, StreamHandler & RotatingFileHandler classes which + # is even worse + def setCloseOnExec(self): + flags = fcntl.fcntl(self.stream.fileno(), fcntl.F_GETFD) + flags |= fcntl.FD_CLOEXEC + fcntl.fcntl(self.stream.fileno(), fcntl.F_SETFD, flags) + def init(filename, level): """Initialise logging. Logs to the given filename, and logs to stderr if @@ -58,9 +80,9 @@ def init(filename, level): global logfilename def openFileHandler(fname): - return logging.handlers.RotatingFileHandler(fname, mode = 'a', - maxBytes = MAX_BYTES, - backupCount = BACKUP_COUNT) + return XendRotatingFileHandler(fname, mode = 'a', + maxBytes = MAX_BYTES, + backupCount = BACKUP_COUNT) # Rather unintuitively, getLevelName will get the number corresponding to # a level name, as well as getting the name corresponding to a level _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |