New content notification from a log file

dear all,

I have the following situation that I don’t have a good solution:

One process periodically will append its output to a file (which is
not under my control), I want to write a ruby problem to detect and
report only the new stuff that went into the output file … Besides
the brute force way such as opening the file and counting the lines
etc, is there a better solution to it?

Thanks for help

Oliver

On Nov 28, 2007, at 3:05 PM, Oliver wrote:

One process periodically will append its output to a file (which is
not under my control), I want to write a ruby problem to detect and
report only the new stuff that went into the output file … Besides
the brute force way such as opening the file and counting the lines
etc, is there a better solution to it?

You can use File.stat(‘filename’).size to get the number of bytes in
the file or .mtime to find the last modification time. If the bytes
and/or time changes you can then open the file and grab the new lines.

Gary W.

You can do something like this:

f = File.new(‘logfile.log’)

while true
while(line = f.gets)
puts line
end
sleep 5
end

Thanks to both of you for the solution.

The double while loop seems a bit more concise, but it depends on
File#gets method handles the changing file content correctly. I will
give it a spin.

Best,

Oliver

On Nov 28, 2007 4:20 PM, Oliver [email protected] wrote:

On Nov 28, 3:33 pm, Christian von Kleist [email protected] wrote:

etc, is there a better solution to it?

You can use File.stat(‘filename’).size to get the number of bytes in
the file or .mtime to find the last modification time. If the bytes
and/or time changes you can then open the file and grab the new lines.

Gary W.

You’re welcome! That approach has worked for me many times in the
past in many languages, including Ruby. Give it a run!