################################################################################
+import fcntl
import os
import pwd
import time
logdir = Config()["Dir::Log"]
if not os.path.exists(logdir):
umask = os.umask(00000)
- os.makedirs(logdir, 02775)
+ os.makedirs(logdir, 0o2775)
os.umask(umask)
# Open the logfile
if debug:
logfile = sys.stderr
else:
- umask = os.umask(00002)
+ umask = os.umask(0o0002)
logfile = utils.open_file(logfilename, 'a')
os.umask(umask)
details.insert(0, timestamp)
# Force the contents of the list to be string.join-able
details = [ str(i) for i in details ]
+ fcntl.lockf(self.logfile, fcntl.LOCK_EX)
# Write out the log in TSV
self.logfile.write("|".join(details)+'\n')
# Flush the output to enable tail-ing
self.logfile.flush()
+ fcntl.lockf(self.logfile, fcntl.LOCK_UN)
def close (self):
"Close a Logger object"
self.log(["program end"])
- self.logfile.flush()
self.logfile.close()