Skip to content

Instantly share code, notes, and snippets.

@omkz
Created January 31, 2021 18:46
Show Gist options
  • Save omkz/d2aef4ed8c9bf4a4776c123edcd7e1f5 to your computer and use it in GitHub Desktop.
Save omkz/d2aef4ed8c9bf4a4776c123edcd7e1f5 to your computer and use it in GitHub Desktop.
Limiting Rails applications logs on Ubuntu server

Kebetulan mendapatkan kesempatan fixing aplikasi Rails milik client yang down. Web servernya menggunakan apache dan passenger. Saya cek lognya ternyata kehabisan space SSD. kemudian saya coba mencarinya file-file dengan ukuran besar(diatas 100MB) dengan perintah:

sudo find / -type f -size +100M -exec ls -lh {} \;

ternyata error.log milik apache2 berukuran 7 Giga lebih. Hindari menghapus dengan perintah rm karena file tersebut akan di lock oleh apache2, saya menggunakan command:

:> /var/log/apache2/error.log

Agar tidak terjadi isu yang sama di masa depan saya menggunakan logrotate. caranya: buat file /etc/logrotate.d/apache2 , tambahkan baris berikut:

/var/log/apache2/*.log {
	daily
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		/etc/init.d/apache2 reload > /dev/nulllog if file greater than 
	endscript
	prerotate
		if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
			run-parts /etc/logrotate.d/httpd-prerotate; \
		fi; \
	endscript
}

untuk membatasi log aplikasi buat file /etc/logrotate.d/rails-app.

# Rotate file jika lebih dari 100 MB
/home/deploy/*/shared/log/*.log {
    size==100M
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    copytruncate
}

Alternatif lain untuk membatasi file pada folder log aplikasi edit file config/environments/production.rb

config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 100.megabytes )
#config.logger = ActiveSupport::Logger.new(Rails.root.join('log', "#{Rails.env}.log")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment