首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用perl日志文件进行日志轮转::旋转

使用perl日志文件进行日志轮转::旋转
EN

Unix & Linux用户
提问于 2018-02-01 02:50:26
回答 1查看 1.1K关注 0票数 2

下面的脚本在CentOS上执行时可以工作,但它不会根据大小旋转日志。每次执行此脚本时都会生成一个新日志。有人能告诉我如何使这个脚本根据大小而工作吗?

代码语言:javascript
运行
复制
#!/usr/bin/perl
use Logfile::Rotate;
my $logfile = new Logfile::Rotate(
  File => '/var/log/remotehost/fakepath/Syslog.log',
  Count => 100,
  Gzip => '/usr/bin/gzip',
  size => 1*1024*1024,
  sub {
    open my $PID, '<', '/usr/lib/systemd/system/rsyslog.service' or
    die "Unable to open pid file:$!\n";
    chomp(my $pid = <$PID>);
    close $PID;
    kill 'HUP', $pid;
  }
);
# Log file locked (really) and loaded. Now let's rotate it.
$logfile->rotate();
# make sure the log file is unlocked (destroying object unlocks file)
undef $logfile;
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-01 03:24:56

事实上,Logfile::Rotate并不是根据大小旋转的,这应该是不足为奇的,因为它的文档中没有任何地方表明它会这样做。基于大小旋转的最简单方法可能是将对rotate的调用封装在if中,例如:

代码语言:javascript
运行
复制
if (-s '/var/log/remotehost/fakepath/Syslog.log' > 1048576) {
    $log->rotate();
}

这应该只在指定的文件大于1MB (大小以字节为单位)时旋转日志。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/421120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档