Menghapus error log dan access log otomatis terjadwal

Pada panduan ini akan memanfatkan fungsi software ulititas cron. Seperti biasa selalu diawali dengan melakukan koneksi via SSH ssh root@host atau penguna Windows dapat memakai Putty.

Membuat script bash

Script ini nantinya akan dijalankan oleh cron, mungkin bisa disebut script hapus.sh

nano hapus.sh

Paste kode berikut ke dalam file hapus.sh tersebut.

#!/bin/bash
echo > /var/log/nginx/error_log
echo > /var/log/nginx/access_log

Simpan dan keluar dari nano text editor, Ctrl+O > Enter > Ctrl+X

Keterangan:

echo > : menghapus konten (perintah echo tanpa string (empty) diarahkan ke file)

var/log/nginx/access_log adalah contoh dimana lokasi log file berada (kebetulan saya memakai nginx web server), jadi silahkan diadaptasikan.

Menghapus konten error log untuk multiple file

Misalnya jumlah file errornya lebih dari satu, VPS dengan control panel biasanya setiap domain mempunyai file error log sendiri-sendiri. Sebagai contoh namanya adalah idnetter.net.err, idnetter.com.err dan idnetter.id.err

echo -n | tee /var/log/*.err

atau pakai perintah find dan truncate

find /var/log -type f -name "*.err" -exec truncate -s 0 "{}" \;

Tinggal dibuat scriptnya.

CHMOD

Agar bisa dieksekusi oleh crontab

chmod +x hapus.sh

Install cronjob

crontab -e

Tambahkan ke baris paling bawah kode berikut

0 * * * * /root/hapus.sh

Keterangan: script hapus.sh akan dijalankan setiap jam, artinya semua konten yang ada di file logging (error_log dan access_log) akan dihapus – lihat baris:echo > /var/log/nginx/error_log

Selesai.

 

Sedikit penjelasan.

Error log sejatinya penting untuk pengembang aplikasi dan admin server, karena disana semua tercatat informasi penting mengenai kesalahan-kesalahan dalam kode maupun galat lain terkait aplikasi atau software yang digunakan.

Sedangkan access log mencatat semua pengunjung/siapapun (termasuk robot crawler) yang mengakses website atau IP VPS kita. Access log juga penting untuk mengetahui perilaku visitor/pengakses website, dimana didalam access log tercatat begitu spesifik dimana, kapan dan jenis peramban yang digunakan.

Tapi dalam kasus tertentu, kadang error_log dan access_log begitu menjengkelkan karena bisa jadi dalam jam saja ukuran filenya bisa membengkak menjadi bermega-mega byte. Dalam hal ini tentu kurang baik dan lambat laun akan membuat kapasitas hardisk penuh.

Web server nginx (Engine-X) dan Apache, error dan access log (logging) bisa dikontrol atau bahkan dinon-aktifkan. Tapi jika dinon-aktifkan tentu kita tidak akan tahu penyebab terjadinya error dalam sistem/aplikasi. Bagi website yang mempunyai trafik tinggi untuk access_log mungkin memang perlu dinon-aktifkan atau dibatasi. Berikut contoh konfigurasi logging di Apache dan Nginx

Konfigurasi Nginx

Disable error_log

error_log /dev/null crit;

Membatasi/level error_log

error_log /var/log/nginx/error.log crit;

crit, hanya mencatat pemasalahan critical

Disable access_log

access_log off;

Konfigurasi Apache

Disable logging

Beri komen pada baris berikut

# CustomLog logs/access_log common
# ErrorLog logs/error_log

atau atur LogLevel

# CustomLog logs/access_log common
ErrorLog logs/error_log
LogLevel crit

Selamat mencoba.

Catatan:

Perintah Linux dalam tutorial ini

3 thoughts on “Menghapus error log dan access log otomatis terjadwal

  1. arif

    Gan, mau tanya kalo hapus access log manual via winscp boleh gak?
    soalnya access log saya banyak, access.log.1, access.log.2 dst

    1. Omar

      tidak apa-apa.

  2. arif

    maaf gan oot nih, kenapa ya tiap buka ssh/domain pada vps sering eror. kalo domain ada tulisan connection timed out. tapi kalo di ping lancar. trus kalo diakses via ip singapore lancar juga. tadi saya coba restart vps, dan ternyata lancar lagi. kira2 penyebabnya apa ya?

Add a comment