обрезать большой файл журнала

Я выполняю тесты производительности для нескольких приложений Java. Приложения создают очень большие лог-файлы (могут достигать 7-10 ГБ) во время теста. Мне нужно обрезать эти файлы журналов между определенными датами и временем. в настоящее время я использую скрипт python, который анализирует метки времени журнала в объекте python datetime и печатает только совпадающие строки. Но это решение очень медленное. Журнал размером 5 ГБ анализируется около 25 минут. Очевидно, что записи в файле журнала идут последовательно, и мне не нужно читать весь файл построчно. Я думал о чтении файла с начала и с конца, пока не будет выполнено условие, и печатать файлы между совпадающим количеством строк. Но я не знаю, как я могу прочитать файл с обратной стороны, не загружая его в память.

Пожалуйста, не могли бы вы предложить мне какое-либо подходящее решение для этого случая.

вот часть скрипта Python:

      lfmt = '%Y-%m-%d %H:%M:%S'
      file = open(filename, 'rU')
      normal_line = ''
      for line in file:
        if line[0] == '[':
          ltimestamp = datetime.strptime(line[1:20], lfmt)

          if ltimestamp >= str and ltimestamp <= end:
            normal_line = 'True'
        else:
          normal_line = ''

      if normal_line:
        print line,
7
задан Nikolai Golub 11 March 2012 в 08:25
поделиться