我在Windows 7上有大量的Perl程序。当我做:
system($cmd) > \\path_to\\logdir\\file.log
程序在没有任何消息的情况下死亡。
如何正确设置日志文件?
否则我会丢失很多错误的信息
答案 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
表示小写的下一个字符。总结:
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" )