Pencatatan aktivitas sistem bagi script/software kita sangat diperlukan untuk mengetahui apapun informasi dari tiap eksekusi skrip PHP yang telah dibuat. Pencatatan atau Logging ini terutama sangat perlu untuk aplikasi Sistem Informasi. Beberapa sistem informasi yang pernah saya kerjakan misalnya melakukan pencatatan tiap aksi yang dilakukan oleh pengguna sehingga mudah dilacak apa saja yang mereka lakukan dan mereka dapatkan.
Ada beberapa teknik yang bisa digunakan, antara lain: pencatatan aksi ke database, dan pencatatan aksi ke file log. Sudah tentu pencatatan aksi ke database adalah teknik yang paling mudah dilakukan dan dikelola. Untuk menambah catatan, tinggal melakukan query insert ke SQL, dan untuk membacanya tinggal gunakan query select. Dari pengalaman saya, teknik ini punya kekurangan besar yaitu pemborosan trafik akses database dan storage database (bisa jutaan baris per bulan). Untuk sebuah sistem informasi akademik misalnya, pada hari-hari sibuk, ratusan aksi bisa dicatat pada database dan sibuknya bisa memaksa engine database bekerja keras.
Teknik kedua yang akan kita bahas disini adalah teknik pencatatan ke file log. File ini hanyalah file biasa dan bisa dibaca dengan pelbagai software, tak perlu engine database. Berikut adalah contoh teknik pencatatan ke file.
[sourcecode language=”php”]
<?php
//definisikan nama file log, berubah tiap bulannya
$_logfilename = "log_".date("Y-m"); //nama log: log_2011-02
// jika file log belum ada, buat dulu
if(!file_exists($_logfilename)){
$_logfilehandler = fopen($_logfilename,’w’); #buat file dengan akses tulis penuh
fwrite($_logfilehandler, "/* File log untuk Sistem Informasi Akademik */\n"); #tulis header untuk file log, jika perlu
fclose($_logfilehandler);
}else{
$_logfilehandler = fopen($_logfilename,’a’); #akses file dengan modus buka/tulis
}
// misalnya untuk aksi A
fwrite($_logfilehandler,’User X melakukan aksi A’);
fclose($_logfilehandler);
?>
[/sourcecode]
Contoh diatas bisa dikembangkan untuk beberapa trik kecil misalnya memisah log file berdasarkan keperluan, misalnya mencatat eksekusi skrip dengan parameter/argument dan kecepatannya, mencatat aksi pengguna dll.