Howdy,
I am doing some log processing (cross referencing multiple logs, and
activating triggers based on the results) and printing the results to
stdout for testing while writing to a file at the same time. The
symptom that I am seeing is that the output to stdout is immediate,
while tailing the file with the same output seems to be one entry
behind. Here is what the code looks like:
logRoot = '/var/log/'
blockLog = File.open(logRoot + 'block.log', "a+")
result = searchFW(src,dst,path,time) # does a
search for the needed info in the log, and returns the matching lines
unless result.empty?
token = parseFW(result) # runs
the results through a parser that pulls out the relevant bits
blockLog << date+"+"+token+"+"+url+"\n"
p date+"+"+token+"+"+url
end
I am a bit green, so my code bits may look clunky. I am using ruby 1.8
on FreeBSD, and the above code is in the depths of a loop that tails a
log file. Actually, the code above is a compressed view with the
relevant parts. Variables/objects are declared further up in the tree.