2015-09-03 3 views
4

Я хочу добавить вкладку просмотра журнала на свой сайт. Вкладка должна печатать весь файл журнала, а после этого печатать только новые строки (например, tail -F в Linux). Сторона клиента находится в HTML и Javascript, а серверная часть находится на Python.Хвост файла журнала

Вот моя функция хвост Python (я нашел его в Интернете):

@cherrypy.expose 
def tail(self): 
    filename = '/opt/abc/logs/myLogFile.log' 
    f = subprocess.Popen(['tail','-F',filename],\ 
      stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
    p = select.poll() 
    p.register(f.stdout) 

    while True: 
     if p.poll(1): 
      print f.stdout.readline() 
    time.sleep(1) 

Этот код действительно печати всего файла журнала. Однако каждый раз, когда я добавляю новые строки в файл, файл печатается с самого начала, вместо того, чтобы печатать новые строки.

Любые предложения по его устранению? Я довольно новичок в Python, поэтому я был бы признателен за любую помощь.

+0

Можете ли вы обертка на вершине своего класса Logger (который может быть писать в лог-файл). Всякий раз, когда ваш объект регистратора получает строку для печати в файле журнала, обертка также передает линию в UI. –

ответ

1

Заканчивать pytailer

https://github.com/six8/pytailer

Конкретно follow команда:

# Follow the file as it grows 
for line in tailer.follow(open('/opt/abc/logs/myLogFile.log')): 
    print line 
+0

Спасибо. На самом деле, я уже пытался использовать 'pytailer'. Не знаю почему, но ничего не происходит, когда я использую функцию 'follow' (ошибок нет, но также нет вывода). – Omri

Смежные вопросы