Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Win32 multiple process and single file redirection

by pelagic (Curate)
on Jan 21, 2005 at 10:30 UTC ( #423930=note: print w/ replies, xml ) Need Help??


in reply to Win32 multiple process and single file redirection

As STDOUT is obviously cmd-specific you just want to concentrate STDERR to one common file.
This looks like a good example for one of the many Logfile Modules you could find on CPAN.


pelagic


Comment on Re: Win32 multiple process and single file redirection
Re^2: Win32 multiple process and single file redirection
by ZlR (Chaplain) on Jan 21, 2005 at 13:24 UTC
    Hmm, OK. Here's my first try with Log::Dispatch . It fails : the final log file holds a mixed content of only one script and the end of the launcher logs .

    I will try with Log::Agent ("dispatch" seems aimed at the opposite, that is log one same things to different places, err ... ).

  • t1.pl ( launches t2.pl and t3.pl , they all try to log to the same file ) :
    #!perl package MyProjectPackage ; use strict ; use warnings ; use Win32::Process ; my $MLIB ; BEGIN { $MLIB = "c:/zlr" ; } use lib ( $MLIB . "/lib/" , $MLIB . "/lib/Perl/" ) ; use Log::Dispatch ; use Log::Dispatch::File ; my $dispatcher = Log::Dispatch->new ; my $MSOFT = "c:/zlr/script/test" ; my $call_hProcess = "" ; my $call_Resultat = 0 ; my $i = 0 ; $dispatcher->add( Log::Dispatch::File->new( name => 'MyProjectErrT1', min_level => 'info', filename => "$MSOFT/ErrGeneral.txt" ) ); $dispatcher->log( level => 'info', message => 'Start of log' ); $call_Resultat = Win32::Process::Create($call_hProcess, "c:/Perl/bin/Perl.exe", "perl t2.pl", 0, IDLE_PRIORITY_CLASS, "." ) ; $call_Resultat = Win32::Process::Create($call_hProcess, "c:/Perl/bin/Perl.exe", "perl t3.pl", 0, IDLE_PRIORITY_CLASS, "." ) ; while ( $i < 20 ) { sleep 10 ; $dispatcher->log( level => 'info', message => "Launcher : $i\n" ); $i++ ; }
  • Here's t2.pl , t3.pl is the same :
    #!perl # Pragmas package MyProjectPackage ; use strict ; use warnings ; use Win32::Process ; my $MLIB ; BEGIN { $MLIB = "c:/zlr" ; } use lib ( $MLIB . "/lib/" , $MLIB . "/lib/Perl/" ) ; use Log::Dispatch ; use Log::Dispatch::File ; my $dispatcher = Log::Dispatch->new ; my $MSOFT = "c:/zlr/script/test" ; my $call_hProcess = "" ; my $call_Resultat = 0 ; my $i = 0 ; $dispatcher->add( Log::Dispatch::File->new( name => 'MyProjectErrT2', min_level => 'info', filename => "$MSOFT/ErrGeneral.txt" ) ); $dispatcher->log( level => 'info', message => 'Start of t2' ); while ( $i < 20 ) { sleep 10 ; $dispatcher->log( level => 'info', message => "t2.pl : $i\n" ); $i++ ; }
      ZlR
      Sorry to hear that! I actually do not know personally any of those modules because my firm decided to use something homegrown (that I may unfortunately not provide to you). I know that e.g. Log::Log4perl is very complete and that you could ask the author (Mike Schilli <m@perlmeister.com>) questions in case you had problems with it. But on the other hand this module might be overkill for a relatively simple problem.

      pelagic
      You can try File::Log

      With this package, differents process can log in the same file.

    • t1.pl ( launches t2.pl and t3.pl ) :
      use strict ; use warnings ; use Win32::Process ; use File::Log; my $call_hProcess = "" ; my $call_Resultat = 0 ; $call_Resultat = Win32::Process::Create($call_hProcess, "c:/Perl/bin/Perl.exe", "perl t2.pl", 0, IDLE_PRIORITY_CLASS, "." ) ; $call_Resultat = Win32::Process::Create($call_hProcess, "c:/Perl/bin/Perl.exe", "perl t3.pl", 0, IDLE_PRIORITY_CLASS, "." ) ;
    • Here's t2.pl , t3.pl
      use strict ; use warnings ; use File::Log; # Log INFORMATIONAL or worse to a file my $log = File::Log->new({ debug => 4, logFileName => 'app.log', logFileMode => '>>', dateTimeStamp => 0, stderrRedirect => 0, defaultFile => 1, logFileDateTime => 0, appName => 'MyApp', PIDstamp => 1, storeExpText => 0, }); for ( my $i=0; $i <= 50; $i++ ) { sleep 2 ; $log->msg(4, "t2.pl : $i\n"); }

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (11)
As of 2014-11-28 12:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (196 votes), past polls