Limiting log size of jenkins.log or hudson.log

2019-02-13 16:18发布

问题:

I use Hudson as well as Jenkins and I have several jobs on them. From time to time my hudson.log/jenkins.log file grows enormously.

I am aware that the size of same can be limited. Please help in how to change and in what file the change has to be made.

回答1:

You can use logrotate. You can find more information about logrotate on this kb article.

Here is how logrotate is configured on my system (/etc/logrotate.d/jenkins):

/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
}

or if you don't really like signals, and it is crashing jenkins for you, you can use the logrotate definition from this debian config.

/var/log/jenkins/jenkins.log {
        weekly
        copytruncate
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
}


回答2:

Using logrotate with copytruncate does not release the lock for the file descriptor and you end up with issues like the one mentioned by Sebastian Sastre, where rotation happens but you won't get your disk space back until you restart Jenkins.

As an alternative solution this script perhaps could be used in the postrotate block. It relies on gdb to send a close() open() replacing the "broken" file descriptor.