Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: processing file while file is in use

by grashoper (Monk)
on Apr 21, 2009 at 16:42 UTC ( #759053=note: print w/replies, xml ) Need Help??


in reply to Re: processing file while file is in use
in thread processing file while file is in use

How could I capture from my logfile into a new file using this? I tried this but I think I need $name to be defined somewhere accidentally posted this twice..is the second call to file tail needed? I think they are just showing examples of usage..could I just open a new file where it reads and print to that new filehandle, open that file and do my process?
use File::Tail; use win32::OLE qw(in); $file=File::Tail->new("E:\\mibor_timingtest\\mibor\\output.txt"); while (defined($line=$file->read)) { print "$line"; } use File::Tail; $file=File::Tail->new(name=>$name, maxinterval=>300, adjustafter=>7) +; while (defined($line=$file->read)) { open(OUT ">>", "c:\\test.txt"); print(OUT "$line"); } sub_do_something{ use win32::OLE qw(in); $search="stuff2searchfor"; open(OUT, "c:\\test.txt"); my @array=<INFO>; close (INFO); foreach $line(@array){ if ($line =~ /$search/) { print "found $line"; sendmail_call_here..to send alert }

Replies are listed 'Best First'.
Re^3: processing file while file is in use
by gwadej (Chaplain) on Apr 21, 2009 at 18:06 UTC

    From the documentation, it looks like you use File::Tail to open the file in the reading process and read a line at a time.

    The module handles all of the housekeeping about the file being written to while you are reading it. There should be no reason for the writing process to change.

    G. Wade
      I am looking to perform some processing based on the data being written to the file, so I was thinking I would periodically open a logfile write to it, test for a condition close it, etc. does this make any sense? my goal is to be informed should errors occur with running loadrunner tests, so that if a change takes place on the server and my script starts failing I am notified, as well as having notifications sent should requests take longer than expected on the server.

        Maybe I'm completely confused, but what I had understood that you wanted was something like the following:

        1. loadrunner is writing to an output file as it runs (say output.log)
        2. your program reads from output.log looking for interesting results.

        Normally the difficult part of this is getting the second program to continue reading when new data is written to the file. That is what File::Tail helps with.

        Now it sounds like you have a few other issues to consider.

        1. some form of logging requirement
        2. notify you on interesting events
        3. requirement to check if requests take too long

        I can't tell if you need the logging in its own right, or if you just need it for the notification. If you just need the notifications, there are many methods that can be used (email, Log::Log4perl, flashing lights, etc.). If you need the log itself, then either writing to a file directly or one of the logging modules on CPAN would work.

        Checking to see if a process is taking too long is could be handled with a timeout on the read. File::Tail can handle this using the maxinterval parameter. If File::Tail doesn't suit your needs, you could wrap the read in an eval and use the alarm function to make certain you don't wait too long. (If you time out, you can notify and loop back to wait some more.)

        At this point, it would probably be worthwhile to try to write down (possibly just for yourself) the process you are trying to implement. From this end, it looks a bit fuzzy. Possibly writing out the events you are looking for and how you want to handle them would help. Then, some of the techniques I've mentioned may make more sense.

        G. Wade

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://759053]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2022-01-20 00:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:












    Results (56 votes). Check out past polls.

    Notices?