Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Limiting log size of jenkins.log or hudson.log

Tags:

jenkins

hudson

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.

like image 426
Harsha K L Avatar asked Apr 01 '14 10:04

Harsha K L


2 Answers

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
}
like image 153
dnozay Avatar answered Oct 29 '22 00:10

dnozay


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.

like image 39
Jefferson Girao Avatar answered Oct 29 '22 02:10

Jefferson Girao