我正在使用 IO 重定向将输出记录到日志文件中。但我希望能够在当天发生变化时将日志移动到不同的文件,例如 2017-08-18.log
。
我尝试使用>xxx.log
重定向来清除日志文件,但所有内容都重新出现在新日志中?
如何设置日志重定向?谢谢。
最佳答案
如果您熟悉 Perl,您可以运行这个小脚本:
use POSIX qw(strftime);
$fbase = "tmp-%Y-%m-%d-%H-%M.log";
while(<>)
{
$fnamenew = strftime $fbase, localtime;
if ($fnamenew ne $fname)
{
print "logging to: $fnamenew\n";
$fname = $fnamenew;
close OUT;
open OUT, ">$fname";
}
print OUT $_;
}
像这样使用:$mycomputation | perl script.pl
。它将把所有输入附加到根据给定时间模式构建的文件名中,此处 tmp-YYYY-MM-DD-HH-MI.log
。在每一新输入行上,都会重建模式并对照旧模式进行检查。如果不同,则输入将通过管道传输到新文件,并关闭旧文件。
关于shell - 如何像 log4j 那样将输出通过管道传输到 shell 中的旋转日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747519/