Source code for loglab.file_sources
import loglab.subproc_gzip as gzip
from .sources import OrderedSource
from .lineformats import LogLine
from .filters import DateFilter
__all__ = (
'GZipLogFile', 'DayLogFile', 'LogFile'
)
[docs]class GZipLogFile(object):
"""Wrapper to construct a LogBuffer from a gzipped file."""
def __init__(self, filename, window_size=1000, line_class=LogLine, ignore_invalid=True):
self.filename = filename
self.window_size = window_size
self.line_class = line_class
self.ignore_invalid = ignore_invalid
def open_file(self):
self.file = gzip.open(self.filename)
return self.file
def close(self):
try:
self.file.close()
except AttributeError:
pass
def __iter__(self):
f = self.open_file()
return iter(OrderedSource(f, window_size=self.window_size, line_class=self.line_class, ignore_invalid=self.ignore_invalid))
[docs]class DayLogFile(object):
"""Wrapper around the above for outputting a filtered, sorted logfile"""
def __init__(self, filename, date):
self.logfile = gzip.open(filename, 'r')
self.filename = filename
self.date = date
def __iter__(self):
return iter(DateFilter(OrderedSource(self.logfile), date=self.date))
[docs]class LogFile(OrderedSource):
def __init__(self, fname, window_size=1000,
line_class=LogLine, ignore_invalid=True):
super(LogFile, self).__init__(
open(fname), window_size, line_class, ignore_invalid
)