4 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
7 class LiveLogStatus(object):
9 Status information regarding live log processing. Stored in the
13 def __init__(self, position=0):
17 class LiveLogFile(object):
19 Encapsulate file that is currently updated/appended as it is used
21 A live status file is used for storing status information (such as
22 current position in log file processing). The live status file name is the
23 log file name with ".lstatus" appended to it.
26 def __init__(self, log_file_name):
27 self.log_file_name = log_file_name
28 self.status_file_name = log_file_name + ".lstatus"
30 self.log_file = open(self.log_file_name, "tt")
31 self.status_file = open(self.status_file_name, "ab+")
32 self.status_file.seek(0)
35 self.log_file.seek(self.status.position)
39 self.status_file.close()
41 def load_status(self):
42 self.status_file.seek(0)
44 # If line is empty (file is just created), position is 0
45 line = self.status_file.readline()
50 self.status = LiveLogStatus(position)
52 self.status_file.seek(0)
54 def store_status(self):
55 self.status_file.seek(0)
56 self.status.position = self.log_file.tell()
57 self.status_file.write(str(self.status.position) + "\n")
58 self.status_file.seek(0)
61 current_position = self.log_file.tell()
62 line = self.log_file.readline()
64 # In case of complete line, update status and return it.
69 # In case of incomplete line, rewind and return "".
70 self.log_file.seek(current_position)