限制jenkins.log或hudson.log的日志大小

限制jenkins.log或hudson.log的日志大小,jenkins,hudson,Jenkins,Hudson,我使用哈德逊和詹金斯,我在他们身上有好几份工作。 有时,我的hudson.log/jenkins.log文件会大幅增长 我知道同样的尺寸是有限的。请帮助说明如何更改以及必须在什么文件中进行更改。您可以使用logrotate。您可以找到有关logrotate的更多信息 以下是如何在我的系统上配置logrotate(/etc/logrotate.d/jenkins): 或者,如果你真的不喜欢信号,而且它会让jenkins崩溃,你可以使用来自的logrotate定义 将logrotate与copytr

我使用哈德逊和詹金斯,我在他们身上有好几份工作。 有时,我的hudson.log/jenkins.log文件会大幅增长


我知道同样的尺寸是有限的。请帮助说明如何更改以及必须在什么文件中进行更改。

您可以使用
logrotate
。您可以找到有关
logrotate
的更多信息

以下是如何在我的系统上配置
logrotate
/etc/logrotate.d/jenkins
):

或者,如果你真的不喜欢信号,而且它会让jenkins崩溃,你可以使用来自的logrotate定义


将logrotate与copytruncate一起使用不会释放文件描述符的锁,最终会出现Sebastian Sastre提到的问题,在这种情况下,会发生旋转,但在重新启动Jenkins之前,您无法收回磁盘空间


作为替代解决方案,可能可以在后旋转块中使用。它依靠gdb发送一个close()open()来替换“损坏”的文件描述符。

使用
copyruncate
而不是
create
来创建一个更简单的脚本,而不必重新启动Jenkins。我有这个配置(后者)在ubuntu系统中,昨天我不得不手动删除一个20GB的日志文件。你可以将大小选项与copytruncate结合起来,而不是根据日期旋转。。。
/var/log/jenkins/jenkins.log /var/log/jenkins/access_log {
    compress
    dateext
    maxage 365
    rotate 99
    size=+4096k
    notifempty
    missingok
    create 644
    postrotate
      if [ -s /var/run/jenkins.pid ]; then
        JPID=`cat /var/run/jenkins.pid`
        test -n "`find /proc/$JPID -maxdepth 0 -user jenkins 2>/dev/null`" && /bin/kill -s ALRM $JPID || :
      fi
    endscript
}
/var/log/jenkins/jenkins.log {
        weekly
        copytruncate
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
}