--- a/log_source.py Wed Feb 11 23:38:05 2009 +0200
+++ b/log_source.py Thu Feb 12 00:16:52 2009 +0200
@@ -384,18 +384,7 @@
self.decoder = decoder
self.filename_fmt = filename_fmt
- def _get_logfile_datetime (self, dt) :
- """
- Get the logfile corresponding to the given datetime
- """
-
- # convert to target timezone
- dtz = dt.astimezone(self.tz)
-
- # convert to date and use that
- return self._get_logfile_date(dtz.date())
-
- def _get_logfile_date (self, d, load=True, mtime=False, ignore_missing=True) :
+ def _get_logfile_date (self, d, load=True, mtime=False, ignore_missing=False) :
"""
Get the logfile corresponding to the given naive date in our timezone.
@@ -443,6 +432,13 @@
reverse the dates are returned in reverse order instead. Note that the meaning of after/until doesn't change
"""
+ # convert timestamps to our timezone's dates
+ if after :
+ after = after.astimezone(self.tz).date()
+
+ if until :
+ until = until.astimezone(self.tz).date()
+
# listdir
filenames = os.listdir(self.path)
@@ -453,7 +449,8 @@
for filename in filenames :
try :
# parse date
- date = self.tz.localize(datetime.datetime.strptime(filename, self.filename_fmt))
+ dt = self.tz.localize(datetime.datetime.strptime(filename, self.filename_fmt))
+ date = dt.date()
except :
# ignore
@@ -465,11 +462,8 @@
continue
else :
-# print
-# print "iter_logfile_dates: after=%s, until=%s, reverse=%s -> %s" % (after, until, reverse, date)
-
# yield
- yield date
+ yield dt
def _iter_date_reverse (self, dt=None) :
"""
@@ -517,7 +511,7 @@
logfile = None
file_count += 1
- logfile = self._get_logfile_date(day)
+ logfile = self._get_logfile_date(day, ignore_missing=True)
# no logfile there?
if not logfile :
@@ -586,18 +580,15 @@
# open that log
logfile = self._get_logfile_date(d_begin)
- if not logfile :
- raise Exception("No logfile for date=%r" % (dt, ))
-
# return the full data
return logfile.read_full()
# otherwise, we need to pull two partial logs
else :
- # open both of them
+ # open both of them, but it's okay if we don't have the second one
f_begin = self._get_logfile_date(d_begin)
- f_end = self._get_logfile_date(d_end)
-
+ f_end = self._get_logfile_date(d_end, ignore_missing=True)
+
# chain together the two sources
return itertools.chain(
f_begin.read_from(dtz_begin),
@@ -634,7 +625,7 @@
log_date = dt.astimezone(self.tz).date()
# test for it
- if self._get_logfile_date(log_date, load=False) :
+ if self._get_logfile_date(log_date, load=False, ignore_missing=True) :
# valid
yield dt.date()
@@ -648,7 +639,7 @@
# compare against dt?
if dt :
# stat
- mtime = self._get_logfile_date(log_date, load=False, mtime=True)
+ mtime = self._get_logfile_date(log_date, load=False, mtime=True, ignore_missing=True)
# not modified?
if mtime < dt :
@@ -656,7 +647,7 @@
continue
# open
- logfile = self._get_logfile_date(log_date, ignore_missing=False)
+ logfile = self._get_logfile_date(log_date)
# yield all lines
for line in logfile.read_full() :