A python "port" of logcheck's logtail2.
Pygtail reads log file lines that have not been read. It will even handle log files that have been rotated. It allows tailing both an open file and will continue where it left off if reinvoked.
From the command line:
Usage: pygtail.py [options] logfile
Print log file lines that have not been read.
Options:
-h, --help show this help message and exit
-o OFFSET_FILE, --offset-file=OFFSET_FILE
File to which offset data is written (default:
<logfile>.offset).
-p, --paranoid Update the offset file every time we read a line
(as opposed to only when we reach the end of the
file).
In your code:
from pygtail import Pygtail
for line in Pygtail("some.log"):
sys.stdout.write(line)Pygtail does not handle rotated logs that have been compressed. You should
configure your log rotation script so that the most recently rotated log is
left uncompressed (logrotated, for example, has a delaycompress option
that does just that).
Logrotation which moves the old log, or renames it in a nonstandard way will only work if you invoke Pygtail once. ie using the offset file won't work since Pygtail won't know where to locate your old log file.
