Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

keep the nginx logs of the last 30 days

I want to keep the nginx logs of the lsat 30 days. The default configuration is 15 days, as the image shows. enter image description here

I would like to keep the last 30 days instead.

Here are the looging settings of nginx:

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

But it doesn't say anything about "how oft" it should be taken.

I'm not a nginx expert at all, so I don't know how/where I can change that configuration.

Maybe someone there needed to do the same and want to help me.

like image 361
Chuck Aguilar Avatar asked May 25 '17 12:05

Chuck Aguilar


2 Answers

To change this behavior, you'll have to change the logrotate file of nginx. This file is probably located in /etc/logrotate.d. For achieving what you're trying to do, put the directives weekly and rotate 30 inside the file corresponding to nginx. After that, use the following command to ensure the changes take effect:

  • logrotate /etc/logrotate.d/nginx-config-file
like image 118
reportingforduty Avatar answered Oct 04 '22 18:10

reportingforduty


You can set up logrotate for nginx, in this way you can maintain logs for 30 days or more as per your requirements !

/etc/logrotate.d/nginx


/var/log/nginx/access_log {
rotate 7
size 5k
dateext
dateformat -%Y-%m-%d
missingok
compress
sharedscripts
postrotate
    test -r /var/run/nginx.pid && kill -USR1 `cat /var/run/nginx.pid`
endscript
}

change value of #rotate accordingly ! 30,40 etc etc ...

like image 44
Saad Avatar answered Oct 04 '22 19:10

Saad