Changeset 32:db099a6971e9 in livinglogic.python.tipimaid

Show
Ignore:
Timestamp:
12/02/08 18:49:27 (10 years ago)
Author:
Nikolas Tautenhahn <nik@…>
Children:
33:6dbb6acccbba, 34:49b76d528bc4
Branch:
default
Message:

use the time of a log entry to determine its filename rather than any now

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • liaalh.py

    r31 r32  
    2626        if gzip_logs is not None and not pattern.endswith(".gz"): 
    2727            self.pattern = "%s.gz" % self.pattern 
    28         if utcrotate: 
    29             self.getnow = self.getutcnow 
     28        self.utcrotate = utcrotate 
     29        self.updateutcoffset() 
    3030        self.handlevirtualhost = "%v" in pattern 
    3131        self.run = self.run_buffered if buffertime > 0 else self.run_unbuffered 
     
    6161                yield (None, line) 
    6262 
    63     def writeline(self, server, line): 
    64         filename = self.getnow().strftime(self.pattern) 
     63    def writeline(self, utclogdate, server, line): 
     64        if self.utcrotate: 
     65            filename = utclogdate.strftime(self.pattern) 
     66        else: 
     67            filename = (utclogdate + self.localutcoffset).strftime(self.pattern) 
    6568        if self.handlevirtualhost: 
    6669            filename = filename.replace("%v", server) 
     
    7073                f.flush() 
    7174                f.close() 
     75                self.updateutcoffset() 
    7276                self.servers[server] = f = self.openfile(filename) 
    7377        else: 
     
    7882    def run_unbuffered(self): 
    7983        for (server, data) in self.readlines(): 
    80             self.writeline(server, data) 
     84            datestring = self.re_find_date.findall(data)[0] 
     85            utclogdate = self.apachedate2utc(datestring) 
     86            self.writeline(utclogdate, server, data) 
    8187 
    8288    def run_buffered(self): 
     
    8894            for (server, data) in self.readlines(): 
    8995                datestring = self.re_find_date.findall(data)[0] 
    90                 utctime = self.apachedate2utc(datestring) 
    91                 self.add(LogLine((utctime, server, data))) 
     96                utclogdate = self.apachedate2utc(datestring) 
     97                self.add(LogLine((utclogdate, server, data))) 
    9298        except Exception, exc: 
    9399            self.flushall() 
     
    112118            if datetime.datetime.utcnow() - utclogdate < self.buffertime: 
    113119                return 
    114             self.writeline(server, logdata) 
     120            self.writeline(utclogdate, server, logdata) 
    115121            self.data.pop(0) 
    116122 
     
    123129        return utcdate 
    124130 
    125     def getnow(self): 
    126         return datetime.datetime.now() 
    127  
    128     def getutcnow(self): 
    129         return datetime.datetime.utcnow() 
     131    def updateutcoffset(self): 
     132        temp = datetime.datetime.now() - datetime.datetime.utcnow() 
     133        self.localutcoffset = datetime.timedelta(days=temp.days, seconds=temp.seconds+1, microseconds=0) 
    130134 
    131135    def sighandler(self, signum, frame):