Omri
Omri

Reputation: 1656

Tailing a log file

I want to add a log viewer tab to my website. The tab is supposed to print the whole log file, and after that print new lines (such as tail -F command in Linux) only. The client Side is in HTML and Javascript, and the server side is in Python.

Here is my tail Python function (I found it in the web):

@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)

This code is indeed printing the whole log file. However, each time I add new lines to the file, the file has been printed from the beginning, instead of printing the new lines.

Any suggestions how to fix it? I'm pretty new in Python, so I would appreciate any kind of help.

Upvotes: 4

Views: 1045

Answers (1)

TomNash
TomNash

Reputation: 3298

Check out pytailer

https://github.com/six8/pytailer

Specifically the follow command:

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

Upvotes: 1

Related Questions