diff options
Diffstat (limited to 'elogv')
-rwxr-xr-x | elogv | 32 |
1 files changed, 14 insertions, 18 deletions
@@ -33,6 +33,7 @@ import gettext import locale import gzip import bz2 +import lzma import signal _LOCALE_CATEGORY_PAIRS = ( @@ -46,12 +47,6 @@ _LOCALE_CATEGORY_PAIRS = ( (locale.LC_ALL, 'LC_ALL'), ) -no_liblzma = False -try: - import liblzma -except ImportError: - no_liblzma = True - def report_bad_locale(variable, value): py_version = '%s.%s.%s' % sys.version_info[:3] @@ -418,18 +413,19 @@ class ElogViewer: self.logf_wrap = self.wrap_logf_lines() self.show_log() - def openfile(self, myfile): - if myfile.endswith('.xz'): - if not no_liblzma: - self.logf = liblzma.LZMAFile(myfile) - else: - sys.exit('You need pyliblzma library to be able to read xz compressed elog files.\nhttp://pypi.python.org/pypi/pyliblzma') - elif myfile.endswith('.gz'): - self.logf = gzip.open(myfile) - elif myfile.endswith('.bz2'): - self.logf = bz2.BZ2File(myfile) + @staticmethod + def open(file, mode='rt'): + if file.endswith('.xz'): + return lzma.open(file, mode=mode) + elif file.endswith('.gz'): + return gzip.open(file, mode=mode) + elif file.endswith('.bz2'): + return bz2.open(file, mode=mode) else: - self.logf = open(myfile) + return open(file, mode=mode) + + def openfile(self, file): + self.logf = self.open(file) def refresh_file_pad(self): """ @@ -528,7 +524,7 @@ class ElogViewer: """ Get the highest elog class in a file """ - with open(filepath) as f: + with self.open(filepath) as f: classes = re.findall("LOG:|INFO:|WARN:|ERROR:", f.read()) if "ERROR:" in classes: |