Hi Markus, Welcome to Ruby ! From: "Markus Wichmann" <wichmann.markus / gmx.net> > I'd like to parse an Apache logfile at regular intervals, say every 15 > minutes. If that part of the logfile that has been added since the last > parsing contains a certain String, let's say "blueice", I'd like to be > sent an e-mail. A brute-force approach might be to keep track of how many lines of the log file you've read, and re-read the logfile each time, discarding up to the number of lines you'd read previously, and only considering the new lines. However, there's an even easier (and more efficient) way... If you keep the logfile open, you'll get a 'nil' value back from gets() when you've reached the end of the file... If you keep the logfile open, though, and wait the 15 minutes, you can just call gets() again and you'll get just the new lines that have been added to the logfile since last time. (Then you'll get the 'nil' again, indicating you're at the end of the *current* length of the logfile... at which point you can wait for 15 min. again...) You can cause Ruby to pause for 15 minutes, by specifying the number of seconds to sleep, as: sleep(15 * 60) You can open the logfile, with, for ex.: logf = File.open("/var/log/httpd/access_log", "r") To scan for the string data you're looking for, regular expressions might be appropriate... Using your "blueice" example: while (line = logf.gets) if line =~ /blueice/ # scan for "blueice" string anywhere on line send_me_email end end There are likely several ways to send email from Ruby, but here are a couple I use. If sendmail is available locally, I might use that; or if I need to talk directly to my ISP's SMTP server, that's easy too... Here's a sendmail example: from_addr = "log-voyeur / somewhere.net" to_addr = "me / somewhere.net" email_text = <<"END_EMAIL" To: "Me" <#{to_addr}> From: #{from_addr} Subject: That thar logfile turned up somethin' Hi, #{to_addr}, Here's the email about the logfile thing. END_EMAIL # now the sendmail part... IO.popen("/usr/sbin/sendmail #{to_addr}", "w") do |sendmail| sendmail.print email_text end # That's it... Or, using SMTP directly: require 'net/smtp' Net::SMTP.start("your-isp-smtp-server.com") do |smtp| smtp.sendmail(email_text, from_addr, to_addr) end That's it...! Hope this helps, and, apologies in advance if there are any typos in the above code snippets!! :) Regards, Bill