|
有时候我们经常需要记录一下程序运行过程中的所以日志,包括错误日志和输入输出日志。在下面的这个例子中,logWrapper子函数就实现了这样的功能,记录了程序的所有输入输出和执行时间,下面就通过这个例子看一下这个程序是如何执行的。
#!/usr/bin/perl
use warnings;
use strict;
no strict "refs";
sub testLogToStd{
print "Test stdout : n";
open LOG,"> 2.txt";
select LOG;
print "just a testn";
#recover STDOUT
select STDOUT;
print "just a test2n";
close LOG;
}
sub testFun{
print "From testFunn";
print STDERR "From TestFun Errorn";
}
sub testFun2{
my $arg1 = shift;
my $arg2 = shift;
print "From testFun2n";
print $arg1."n";
print $arg2."n";
}
my $log_root = "log" if(! $3 ||$3 == "");
my $ret = system("mkdir $log_root") if(! -e $log_root);
my $report_log = "$log_root/report.log";
open my $REPORTLOG,">",$report_log or die "cannot not open log file report.logn";
sub logWrapper{
my $log_root = shift;
my $REPORTLOG = shift;
my $fun = shift;
my @parameters = @_;
*old_stdout = *STDOUT;
*old_stderr = *STDERR;
open LOG, ">","$log_root/$fun.log" or die "annot open log file $fun.n";
*STDOUT = *LOG;
*STDERR = *LOG;
my $start = time;
my $ret = &$fun(@parameters);
my $end = time;
*STDOUT = *old_stdout;
*STDERR = *old_stderr;
close LOG;
my $duration = $end - $start;
print $REPORTLOG "$funn";
print $REPORTLOG "start:".localtime($start)."n";
print $REPORTLOG "end:".localtime($end)."n";
print $REPORTLOG "duration:".formatTimeDuration($duration)."n";
print $REPORTLOG "result:$retn";
print $REPORTLOG "n";
print $REPORTLOG "n";
}
sub formatTimeDuration($){
my $t = shift;
my $hrs = int($t/3600);
my $mins = int($t%3600/60);
my $secs = int($t%3600%60);
return "$hrs:$mins:$secs";
}
&logWrapper($log_root,$REPORTLOG,"testFun");
&logWrapper($log_root,$REPORTLOG,"testFun2","arg1","arg2");
print "thanksn";
若需要调用外部命令,则需要如下:
#!/usr/bin/perl
use strict;
use warnings;
# run external commands
# redirect stdout and stderr
sub run_cmd{
my $cmd = shift;
my $pid = open(PH, "$cmd 2>&1 |");
while (<PH>) {print $_; }
}
open(FH, ">", "perl-test.log");
*old_stdout = *STDOUT;
*old_stderr = *STDERR;
*STDOUT = *FH;
*STDERR = *FH;
my $ret = undef;
$ret = readpipe("cp a b ");
$ret = system("cp a b");
$ret = `cp a b`;
run_cmd("cp a b");
print "AA";
print STDERR "BB";
*STDOUT = *old_stdout;
*STDERR = *old_stderr;
www.urukw.com/gbdfyldl
www.urukw.com/gbdfkhbl
www.urukw.com/gbdfylkh
www.urukw.com/gbylgbdf
www.urukw.com/gggbdfylc
www.urukw.com/gbdfsjzmdl
www.urukw.com/gbdfylfl
www.urukw.com/gbdfzmnyq
www.urukw.com/gbdfyj
www.urukw.com/gbdfxmf
www.urukw.com/szdmdgbdf
www.urukw.com/mdgbdf
www.urukw.com/gbdfdhkh
www.urukw.com/gbdfdlkh
www.urukw.com/gbdfwtkh
www.urukw.com/gbdfkh1581260
www.urukw.com/gbdfylhbwz
www.urukw.com/gbdfyq
www.urukw.com/sygbdfyl
www.urukw.com/gbdfylzmyq
www.urukw.com/gbdfylyflm
www.urukw.com/gbdfylcznl
www.urukw.com/gbdfwz
www.urukw.com/gbdftz
www.urukw.com/gbdfdh
www.urukw.com/gbdfsj
www.urukw.com/gggbdf
www.urukw.com/gbdfgfw
www.urukw.com/gbdfkhw
www.urukw.com/gbdfsh
www.urukw.com/gbdfsjxz
www.urukw.com/gbdfylsjxz
www.urukw.com/gbdfwfm
www.urukw.com/gbdfdtkh
www.urukw.com/gbdfhy
www.urukw.com/gbdfrhkh
www.urukw.com/gbdfzdl
www.urukw.com/gbdfw
www.urukw.com/gbdfdtkmdl
www.urukw.com/gbdfglw
www.urukw.com/gbdfxjw
www.urukw.com/gbdfwtkhzx
www.urukw.com/gbdfwtdhkh
www.urukw.com/gbdfwkh
www.urukw.com/gbdfwthykh
www.urukw.com/gbdftgy
www.urukw.com/gbdfylwz
www.urukw.com/gbdfzmzc
www.urukw.com/gbdfbjl
www.urukw.com/gbdfylyq
www.urukw.com/mdgbdfrqrh
www.urukw.com/gbdfmdyjm
www.urukw.com/mdgbdfaqm
www.urukw.com/gbdfkmdl
www.urukw.com/gbdfxwz
www.urukw.com/gbdfwtzx
www.urukw.com/gbdfdms
www.urukw.com/gbdfzc
www.urukw.com/gbdfsy
www.urukw.com/gbdfwzx
www.urukw.com/gbdfnyqb
www.urukw.com/gbdfzj
www.urukw.com/gbdfdz
www.jcukg.com/gbdf
www.jcukg.com/gbdfkh
www.jcukg.com/gbdfylw
www.jcukg.com/gbdfyl
www.jcukg.com/gbdfhykh
www.jcukg.com/1659988_comgbdf
www.jcukg.com/gbdfdhtz
www.jcukg.com/gbdfylpt
www.jcukg.com/gbdfshy
www.jcukg.com/gbdfzxkh
www.jcukg.com/gbdfgw
www.jcukg.com/gbdfwt
www.jcukg.com/gbdfylc
www.jcukg.com/gbdfdl
www.jcukg.com/gbdfxc
www.jcukg.com/gbdfyldl
www.jcukg.com/gbdfkhbl
www.jcukg.com/gbdfylkh
www.jcukg.com/gbylgbdf
www.jcukg.com/gggbdfylc
www.jcukg.com/gbdfsjzmdl
www.jcukg.com/gbdfylfl
www.jcukg.com/gbdfzmnyq
www.jcukg.com/gbdfyj
www.jcukg.com/gbdfxmf
www.jcukg.com/szdmdgbdf
www.jcukg.com/mdgbdf
www.jcukg.com/gbdfdhkh
www.jcukg.com/gbdfdlkh
www.jcukg.com/gbdfwtkh
www.jcukg.com/gbdfkh1581260
www.jcukg.com/gbdfylhbwz
www.jcukg.com/gbdfyq
www.jcukg.com/sygbdfyl
www.jcukg.com/gbdfylzmyq
www.jcukg.com/gbdfylyflm
www.jcukg.com/gbdfylcznl
www.jcukg.com/gbdfwz
www.jcukg.com/gbdftz
www.jcukg.com/gbdfdh
www.jcukg.com/gbdfsj
www.jcukg.com/gggbdf
www.jcukg.com/gbdfgfw
www.jcukg.com/gbdfkhw
www.jcukg.com/gbdfsh
www.jcukg.com/gbdfsjxz
www.jcukg.com/gbdfylsjxz
www.jcukg.com/gbdfwfm
www.jcukg.com/gbdfdtkh
www.jcukg.com/gbdfhy
www.jcukg.com/gbdfrhkh
www.jcukg.com/gbdfzdl
www.jcukg.com/gbdfw
www.jcukg.com/gbdfdtkmdl
www.jcukg.com/gbdfglw
www.jcukg.com/gbdfxjw
www.jcukg.com/gbdfwtkhzx
www.jcukg.com/gbdfwtdhkh
www.jcukg.com/gbdfwkh
www.jcukg.com/gbdfwthykh
www.jcukg.com/gbdftgy
www.jcukg.com/gbdfylwz
www.jcukg.com/gbdfzmzc
www.jcukg.com/gbdfbjl
www.jcukg.com/gbdfylyq
www.jcukg.com/mdgbdfrqrh
www.jcukg.com/gbdfmdyjm
www.jcukg.com/mdgbdfaqm
www.jcukg.com/gbdfkmdl
www.jcukg.com/gbdfxwz
www.jcukg.com/gbdfwtzx
www.jcukg.com/gbdfdms
www.jcukg.com/gbdfzc
www.jcukg.com/gbdfsy
www.jcukg.com/gbdfwzx
www.jcukg.com/gbdfnyqb
www.jcukg.com/gbdfzj
www.jcukg.com/gbdfdz
www.yrikt.com/gbdf
www.yrikt.com/gbdfkh
www.yrikt.com/gbdfylw
www.yrikt.com/gbdfyl
www.yrikt.com/gbdfhykh
www.yrikt.com/1659988_comgbdf
www.yrikt.com/gbdfdhtz
www.yrikt.com/gbdfylpt
www.yrikt.com/gbdfshy
www.yrikt.com/gbdfzxkh
www.yrikt.com/gbdfgw
www.yrikt.com/gbdfwt
www.yrikt.com/gbdfylc
www.yrikt.com/gbdfdl
www.yrikt.com/gbdfxc
www.yrikt.com/gbdfyldl
www.yrikt.com/gbdfkhbl
www.yrikt.com/gbdfylkh
www.yrikt.com/gbylgbdf
www.yrikt.com/gggbdfylc
www.yrikt.com/gbdfsjzmdl
www.yrikt.com/gbdfylfl
www.yrikt.com/gbdfzmnyq
www.yrikt.com/gbdfyj
www.yrikt.com/gbdfxmf
www.yrikt.com/szdmdgbdf
www.yrikt.com/mdgbdf
www.yrikt.com/gbdfdhkh
www.yrikt.com/gbdfdlkh
www.yrikt.com/gbdfwtkh
www.yrikt.com/gbdfkh1581260
www.yrikt.com/gbdfylhbwz
www.yrikt.com/gbdfyq
www.yrikt.com/sygbdfyl
www.yrikt.com/gbdfylzmyq
www.yrikt.com/gbdfylyflm
www.yrikt.com/gbdfylcznl
www.yrikt.com/gbdfwz
www.yrikt.com/gbdftz
www.yrikt.com/gbdfdh
www.yrikt.com/gbdfsj
www.yrikt.com/gggbdf
www.yrikt.com/gbdfgfw
www.yrikt.com/gbdfkhw
www.yrikt.com/gbdfsh
www.yrikt.com/gbdfsjxz
www.yrikt.com/gbdfylsjxz
www.yrikt.com/gbdfwfm
www.yrikt.com/gbdfdtkh
www.yrikt.com/gbdfhy
www.yrikt.com/gbdfrhkh
www.yrikt.com/gbdfzdl
www.yrikt.com/gbdfw
www.yrikt.com/gbdfdtkmdl
www.yrikt.com/gbdfglw
www.yrikt.com/gbdfxjw
www.yrikt.com/gbdfwtkhzx
www.yrikt.com/gbdfwtdhkh
www.yrikt.com/gbdfwkh
www.yrikt.com/gbdfwthykh
www.yrikt.com/gbdftgy
www.yrikt.com/gbdfylwz
www.yrikt.com/gbdfzmzc
www.yrikt.com/gbdfbjl
www.yrikt.com/gbdfylyq
www.yrikt.com/mdgbdfrqrh
www.yrikt.com/gbdfmdyjm
www.yrikt.com/mdgbdfaqm
www.yrikt.com/gbdfkmdl
www.yrikt.com/gbdfxwz
www.yrikt.com/gbdfwtzx
www.yrikt.com/gbdfdms
www.yrikt.com/gbdfzc
www.yrikt.com/gbdfsy
www.yrikt.com/gbdfwzx
www.yrikt.com/gbdfnyqb
www.yrikt.com/gbdfzj
www.yrikt.com/gbdfdz
www.bwjvy.com/gbdf
www.bwjvy.com/gbdfkh
www.bwjvy.com/gbdfylw
www.bwjvy.com/gbdfyl
www.bwjvy.com/gbdfhykh
www.bwjvy.com/1659988_comgbdf
www.bwjvy.com/gbdfdhtz
www.bwjvy.com/gbdfylpt
www.bwjvy.com/gbdfshy
www.bwjvy.com/gbdfzxkh
www.bwjvy.com/gbdfgw
www.bwjvy.com/gbdfwt
www.bwjvy.com/gbdfylc
www.bwjvy.com/gbdfdl
www.bwjvy.com/gbdfxc
www.bwjvy.com/gbdfyldl
www.bwjvy.com/gbdfkhbl
www.bwjvy.com/gbdfylkh
www.bwjvy.com/gbylgbdf
www.bwjvy.com/gggbdfylc
www.bwjvy.com/gbdfsjzmdl
www.bwjvy.com/gbdfylfl
www.bwjvy.com/gbdfzmnyq
www.bwjvy.com/gbdfyj
www.bwjvy.com/gbdfxmf
www.bwjvy.com/szdmdgbdf
www.bwjvy.com/mdgbdf
www.bwjvy.com/gbdfdhkh
www.bwjvy.com/gbdfdlkh
www.bwjvy.com/gbdfwtkh
www.bwjvy.com/gbdfkh1581260
www.bwjvy.com/gbdfylhbwz
www.bwjvy.com/gbdfyq
www.bwjvy.com/sygbdfyl
www.bwjvy.com/gbdfylzmyq
www.bwjvy.com/gbdfylyflm
www.bwjvy.com/gbdfylcznl
www.bwjvy.com/gbdfwz
www.bwjvy.com/gbdftz
www.bwjvy.com/gbdfdh
www.bwjvy.com/gbdfsj
www.bwjvy.com/gggbdf
www.bwjvy.com/gbdfgfw
www.bwjvy.com/gbdfkhw
www.bwjvy.com/gbdfsh
www.bwjvy.com/gbdfsjxz
www.bwjvy.com/gbdfylsjxz
www.bwjvy.com/gbdfwfm
www.bwjvy.com/gbdfdtkh
www.bwjvy.com/gbdfhy
www.bwjvy.com/gbdfrhkh
www.bwjvy.com/gbdfzdl
www.bwjvy.com/gbdfw
www.bwjvy.com/gbdfdtkmdl
www.bwjvy.com/gbdfglw
www.bwjvy.com/gbdfxjw
www.bwjvy.com/gbdfwtkhzx
www.bwjvy.com/gbdfwtdhkh
www.bwjvy.com/gbdfwkh
www.bwjvy.com/gbdfwthykh
www.bwjvy.com/gbdftgy
www.bwjvy.com/gbdfylwz
www.bwjvy.com/gbdfzmzc
www.bwjvy.com/gbdfbjl
www.bwjvy.com/gbdfylyq
www.bwjvy.com/mdgbdfrqrh
www.bwjvy.com/gbdfmdyjm
www.bwjvy.com/mdgbdfaqm
www.bwjvy.com/gbdfkmdl
www.bwjvy.com/gbdfxwz
www.bwjvy.com/gbdfwtzx
www.bwjvy.com/gbdfdms
www.bwjvy.com/gbdfzc
www.bwjvy.com/gbdfsy
www.bwjvy.com/gbdfwzx
www.bwjvy.com/gbdfnyqb
www.bwjvy.com/gbdfzj
www.bwjvy.com/gbdfdz
www.vrtyo.com/gbdf
www.vrtyo.com/gbdfkh
www.vrtyo.com/gbdfylw
www.vrtyo.com/gbdfyl
www.vrtyo.com/gbdfhykh
www.vrtyo.com/1659988_comgbdf
www.vrtyo.com/gbdfdhtz
www.vrtyo.com/gbdfylpt
www.vrtyo.com/gbdfshy
www.vrtyo.com/gbdfzxkh
www.vrtyo.com/gbdfgw
www.vrtyo.com/gbdfwt
www.vrtyo.com/gbdfylc
www.vrtyo.com/gbdfdl
www.vrtyo.com/gbdfxc
www.vrtyo.com/gbdfyldl
www.vrtyo.com/gbdfkhbl
www.vrtyo.com/gbdfylkh
www.vrtyo.com/gbylgbdf
www.vrtyo.com/gggbdfylc
www.vrtyo.com/gbdfsjzmdl
www.vrtyo.com/gbdfylfl
www.vrtyo.com/gbdfzmnyq
www.vrtyo.com/gbdfyj
www.vrtyo.com/gbdfxmf
www.vrtyo.com/szdmdgbdf
www.vrtyo.com/mdgbdf
www.vrtyo.com/gbdfdhkh
www.vrtyo.com/gbdfdlkh
www.vrtyo.com/gbdfwtkh
www.vrtyo.com/gbdfkh1581260
www.vrtyo.com/gbdfylhbwz
www.vrtyo.com/gbdfyq
www.vrtyo.com/sygbdfyl
www.vrtyo.com/gbdfylzmyq
www.vrtyo.com/gbdfylyflm
www.vrtyo.com/gbdfylcznl
www.vrtyo.com/gbdfwz
www.vrtyo.com/gbdftz
www.vrtyo.com/gbdfdh
www.vrtyo.com/gbdfsj
www.vrtyo.com/gggbdf
www.vrtyo.com/gbdfgfw
www.vrtyo.com/gbdfkhw
www.vrtyo.com/gbdfsh
www.vrtyo.com/gbdfsjxz
www.vrtyo.com/gbdfylsjxz
www.vrtyo.com/gbdfwfm
www.vrtyo.com/gbdfdtkh
www.vrtyo.com/gbdfhy
www.vrtyo.com/gbdfrhkh
www.vrtyo.com/gbdfzdl
www.vrtyo.com/gbdfw
www.vrtyo.com/gbdfdtkmdl
www.vrtyo.com/gbdfglw
www.vrtyo.com/gbdfxjw
www.vrtyo.com/gbdfwtkhzx
www.vrtyo.com/gbdfwtdhkh
www.vrtyo.com/gbdfwkh
www.vrtyo.com/gbdfwthykh
www.vrtyo.com/gbdftgy
www.vrtyo.com/gbdfylwz
www.vrtyo.com/gbdfzmzc
www.vrtyo.com/gbdfbjl
www.vrtyo.com/gbdfylyq
www.vrtyo.com/mdgbdfrqrh
www.vrtyo.com/gbdfmdyjm
www.vrtyo.com/mdgbdfaqm
www.vrtyo.com/gbdfkmdl
www.vrtyo.com/gbdfxwz
www.vrtyo.com/gbdfwtzx
www.vrtyo.com/gbdfdms
www.vrtyo.com/gbdfzc
www.vrtyo.com/gbdfsy
www.vrtyo.com/gbdfwzx
www.vrtyo.com/gbdfnyqb
www.vrtyo.com/gbdfzj
www.vrtyo.com/gbdfdz
www.jltwy.com/gbdf
www.jltwy.com/gbdfkh
www.jltwy.com/gbdfylw
www.jltwy.com/gbdfyl
www.jltwy.com/gbdfhykh
www.jltwy.com/1659988_comgbdf
www.jltwy.com/gbdfdhtz
www.jltwy.com/gbdfshy
www.jltwy.com/gbdfzxkh
www.jltwy.com/gbdfgw
www.jltwy.com/gbdfwt
www.jltwy.com/gbdfylc
www.jltwy.com/gbdfdl
www.jltwy.com/gbdfxc
www.jltwy.com/gbdfyldl
www.jltwy.com/gbdfkhbl
www.jltwy.com/gbdfylkh
www.jltwy.com/gbylgbdf
www.jltwy.com/gggbdfylc
www.jltwy.com/gbdfsjzmdl
www.jltwy.com/gbdfzmnyq
www.jltwy.com/gbdfyj
www.jltwy.com/gbdfxmf
www.jltwy.com/szdmdgbdf
www.jltwy.com/mdgbdf
www.jltwy.com/gbdfwtkh
www.jltwy.com/gbdfkh1581260
www.jltwy.com/gbdfylhbwz
www.jltwy.com/gbdfyq
www.jltwy.com/sygbdfyl
www.jltwy.com/gbdfylzmyq
www.jltwy.com/gbdfylyflm
www.jltwy.com/gbdfylcznl
www.jltwy.com/gbdfwz
www.jltwy.com/gbdftz
www.jltwy.com/gbdfdh
www.jltwy.com/gbdfsj
www.jltwy.com/gggbdf
www.jltwy.com/gbdfgfw
www.jltwy.com/gbdfkhw
www.jltwy.com/gbdfsh
www.jltwy.com/gbdfsjxz
www.jltwy.com/gbdfylsjxz
www.jltwy.com/gbdfwfm
www.jltwy.com/gbdfdtkh
www.jltwy.com/gbdfhy
www.jltwy.com/gbdfrhkh
www.jltwy.com/gbdfzdl
www.jltwy.com/gbdfw
www.jltwy.com/gbdfdtkmdl
www.jltwy.com/gbdfglw
www.jltwy.com/gbdfxjw
www.jltwy.com/gbdfwtkhzx
www.jltwy.com/gbdfwtdhkh
www.jltwy.com/gbdfwkh
www.jltwy.com/gbdfwthykh
www.jltwy.com/gbdftgy
www.jltwy.com/gbdfbjl
www.jltwy.com/gbdfylyq
www.jltwy.com/mdgbdfrqrh
www.jltwy.com/gbdfmdyjm
www.jltwy.com/mdgbdfaqm
www.jltwy.com/gbdfkmdl
www.jltwy.com/gbdfxwz
www.jltwy.com/gbdfwtzx
www.jltwy.com/gbdfdms
www.jltwy.com/gbdfzc
www.jltwy.com/gbdfsy
www.jltwy.com/gbdfwzx
www.jltwy.com/gbdfnyqb
www.jltwy.com/gbdfzj
www.jltwy.com/gbdfdz
www.mvxjd.com/gbdf
www.mvxjd.com/gbdfkh
www.mvxjd.com/gbdfylw
www.mvxjd.com/gbdfyl
www.mvxjd.com/gbdfhykh
www.mvxjd.com/1659988_comgbdf
www.mvxjd.com/gbdfdhtz
www.mvxjd.com/gbdfylpt
www.mvxjd.com/gbdfshy
www.mvxjd.com/gbdfzxkh
www.mvxjd.com/gbdfgw
www.mvxjd.com/gbdfwt
www.mvxjd.com/gbdfylc
www.mvxjd.com/gbdfdl
www.mvxjd.com/gbdfxc
www.mvxjd.com/gbdfyldl
www.mvxjd.com/gbdfkhbl
www.mvxjd.com/gbdfylkh
www.mvxjd.com/gbylgbdf
www.mvxjd.com/gggbdfylc
www.mvxjd.com/gbdfsjzmdl
www.mvxjd.com/gbdfylfl
www.mvxjd.com/gbdfzmnyq
www.mvxjd.com/gbdfyj
www.mvxjd.com/gbdfxmf
www.mvxjd.com/szdmdgbdf
www.mvxjd.com/mdgbdf
www.mvxjd.com/gbdfdhkh
www.mvxjd.com/gbdfdlkh
www.mvxjd.com/gbdfwtkh
www.mvxjd.com/gbdfkh1581260
www.mvxjd.com/gbdfylhbwz
www.mvxjd.com/gbdfyq
www.mvxjd.com/sygbdfyl
www.mvxjd.com/gbdfylzmyq
www.mvxjd.com/gbdfylyflm
www.mvxjd.com/gbdfylcznl
www.mvxjd.com/gbdfwz
www.mvxjd.com/gbdftz
www.mvxjd.com/gbdfdh
www.mvxjd.com/gbdfsj
www.mvxjd.com/gggbdf
www.mvxjd.com/gbdfgfw
www.mvxjd.com/gbdfkhw
www.mvxjd.com/gbdfsh
|
|
|