如何为Windows perl程序设置日志文件

时间:2016-06-06 14:40:27

标签: perl

我在Windows 7上有大量的Perl程序。当我做:

system($cmd) > \\path_to\\logdir\\file.log    

程序在没有任何消息的情况下死亡。

如何正确设置日志文件?

否则我会丢失很多错误的信息

3 个答案:

答案 0 :(得分:0)

您的脚本中存在一些问题:

  • 如果您已添加

    use strict;
    use warnings;
    

    到您的脚本,它会在您第一次尝试时向您显示以下错误:

    Useless use of numeric gt (>) in void context at ./foo line 9.
    Bareword "logfile" not allowed while "strict subs" in use at ./foo line 9.
    Bareword "txt" not allowed while "strict subs" in use at ./foo line 9.
    Execution of ./foo aborted due to compilation errors.
    
  • 您需要将$cmd和日志文件的名称加入一个字符串中,并将该字符串作为参数提供给system()
  • 你需要逃避反斜杠,例如\f表示表单提要\l表示小写的下一个字符
  • 如果要重定向错误消息,通常需要将STDOUT STDERR重定向到文件。

总结:

use strict;
use warnings;

my $logfile = "\\path_to\\logdir\\file.log";
my $rc = system("$cmd > $logfile 2>&1");
if (!$rc) {
    warn "something went wrong\n";
}

这会将STDOUT和STDERR重定向到同一个文件。

我的回答是this revision的问题。同时有人编辑了Q,添加了双反斜杠\\,从而使上面的第3个子弹无效。

答案 1 :(得分:-2)

更改 system($ cmd)> \ path_to \ LOGDIR \ file.log 至 system($ cmd> \ path_to \ logdir \ file.log)

答案 2 :(得分:-2)

糟糕。
改变

system($cmd > \path_to\logdir\file.log )



system($cmd "> \path_to\logdir\file.log" )