假设我有一个名为print_error.sh
的shell脚本,如下所示:
#!/usr/bin/bash
echo "ERROR: Bla bla, yada yada."
exit 1
现在我在Perl脚本中,用
调用这个shell脚本system("print_error.sh")
我现在想要读取print_error.sh
的控制台输出并将其写入Log4perl记录器。
我怎样才能做到这一点?
答案 0 :(得分:5)
答案 1 :(得分:0)
以下是我找到的解决方案:
#!/usr/bin/perl
use Log::Log4perl;
my $logfile = "log.txt";
$ENV{"LOGFILE"} = $logfile;
Log::Log4perl->init("log4perl.properties");
$logger = Log::Log4perl->get_logger();
$logger->info("pos 1");
system("./print_error.sh 0 2>&1 >> $logfile") == 0
or die "perl error";
$logger->info("pos 2");
exit 0
另见here。