Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
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
Replies are listed 'Best First'.
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 exploiting the Monastery: (11)
As of 2015-07-08 05:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (94 votes), past polls