源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

perl的logwrapper使用实例代码

  • 时间:2021-08-19 20:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:perl的logwrapper使用实例代码
这里为大家举二个小例子,供朋友们学习参考。 对任何的函数记录函数运行的时间。
[u]复制代码[/u] 代码如下:
#!/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 test\n"; #recover STDOUT select STDOUT; print "just a test2\n"; close LOG; } sub testFun{   print "From testFun\n";   print STDERR "From TestFun Error\n"; } sub testFun2{   my $arg1 = shift;   my $arg2 = shift;   print "From testFun2\n";   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.log\n"; 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 "$fun\n";   print $REPORTLOG "start:".localtime($start)."\n";   print $REPORTLOG "end:".localtime($end)."\n";   print $REPORTLOG "duration:".formatTimeDuration($duration)."\n";   print $REPORTLOG "result:$ret\n";   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 "thanks\n";
若需要调用外部命令,则需要如下:
[u]复制代码[/u] 代码如下:
#!/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;
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部