Ada satu momen yang hampir selalu sama ketika sebuah website bermasalah. Halaman yang biasanya normal berubah menjadi putih polos tanpa satu huruf pun, atau menampilkan tulisan singkat "500 Internal Server Error". Tidak ada nama file, tidak ada nomor baris, tidak ada petunjuk apa pun tentang penyebabnya. Banyak pemilik website menyimpulkan servernya sedang rusak, padahal kekosongan itu justru disengaja.

Pesan kesalahannya tidak hilang. Ia hanya dipindahkan ke tempat lain agar tidak terbaca pengunjung. Error log adalah berkas catatan tempat server menuliskan setiap kegagalan yang terjadi, lengkap dengan waktu, sumber, dan pesan aslinya. Artikel ini membahas apa saja yang ada di dalamnya, cara membaca satu barisnya, cara membukanya lewat cPanel, dan alasan berkas itu kadang justru kosong. Kalau Anda belum akrab dengan konsep pencatatan aktivitas di server secara umum, penjelasannya kami pisahkan di artikel log.

Error Log Adalah Catatan Apa?

Error log adalah berkas teks berisi daftar kesalahan yang dicatat sebuah sistem secara otomatis, urut berdasarkan waktu, dengan satu peristiwa per baris. Secara harfiah, error log artinya catatan kesalahan. Dalam pemakaian sehari-hari istilah ini kerap ditulis terbalik menjadi log error, atau diterjemahkan menjadi log kesalahan, dan ketiganya merujuk ke benda yang sama.

Sifat yang membedakannya dari catatan lain adalah ini: error log diam ketika semuanya berjalan normal. Ia tidak mencatat kunjungan yang sukses, tidak mencatat halaman yang termuat dengan baik, dan tidak bertambah panjang hanya karena website Anda ramai. Setiap baris di dalamnya menandakan ada sesuatu yang gagal, sehingga berkas yang isinya sedikit justru pertanda baik.

Setiap entri umumnya memuat empat informasi. Pertama, waktu kejadian sampai satuan detik. Kedua, sumber pesannya, yaitu komponen mana yang mengeluh. Ketiga, tingkat keparahan yang menandakan seberapa mendesak masalahnya. Keempat, pesan kesalahan itu sendiri, yang sering menyertakan jalur file dan nomor baris.

Fungsi error log pada dasarnya hanya satu, yaitu memberi Anda bukti tertulis tentang apa yang gagal dan di bagian mana. Karena isinya sespesifik itu, error log menjadi titik awal yang wajar dalam proses debugging. Anda tidak perlu menebak komponen mana yang bermasalah, karena servernya sudah menuliskan jawabannya.

Error Log dan Access Log: Dua Catatan dengan Tugas Berbeda

Website Anda umumnya menghasilkan dua berkas catatan sekaligus, dan keduanya sering tertukar. Access log mencatat setiap permintaan yang masuk, berhasil maupun tidak. Error log hanya mencatat yang gagal, dengan sudut pandang yang berbeda pula.

Access logError log
Kapan ditulistiap permintaanhanya saat gagal
Sudut pandangsiapa mengakses apaapa yang salah
Membesarnyaikut jumlah pengunjungikut jumlah masalah
Dipakai untukpola kunjunganmencari penyebab
Isi khasIP, halaman, kode statusjalur file, nomor baris

Perbedaan praktisnya begini. Kalau Anda ingin tahu berapa banyak orang membuka halaman produk kemarin, jawabannya ada di access log. Kalau Anda ingin tahu kenapa halaman produk gagal terbuka, jawabannya ada di error log. Keduanya bisa saling melengkapi: access log memberi tahu ada permintaan yang berakhir dengan kode 500, dan error log memberi tahu alasannya.

Tiga Hal Berbeda yang Sama-Sama Disebut error_log

Bagian ini menjelaskan sumber kebingungan yang paling sering terjadi. Kata error_log dipakai untuk tiga benda yang berbeda fungsi, dan mencampurnya membuat pencarian masalah berputar-putar.

Tiga arti error_log: berkas teks di server, direktif pengaturan di php.ini, dan fungsi PHP untuk menulis pesan sendiri.Tiga arti error_log: berkas teks di server, direktif pengaturan di php.ini, dan fungsi PHP untuk menulis pesan sendiri.

  1. Berkas error_log: wujud fisiknya, yaitu file teks yang isinya bisa Anda buka dengan editor apa pun. Di sistem Unix namanya error_log, sedangkan di Windows error.log. Inilah yang biasanya dimaksud ketika seseorang berkata "coba cek error log".
  2. Direktif error_log di php.ini: sebuah pengaturan, bukan berkas. Nilainya menentukan ke mana pesan error PHP dikirim. Kalau pengaturan ini dibiarkan kosong, pesan tidak hilang, melainkan diserahkan ke pencatat bawaan lingkungan yang menjalankan PHP. Pada server Apache, artinya pesan itu masuk ke error log Apache.
  3. Fungsi error_log() di PHP: perintah yang bisa dipanggil dari dalam kode untuk menulis pesan buatan sendiri, misalnya untuk menandai bagian program yang sedang diselidiki.

Fungsi tersebut menerima empat parameter, dan parameter keduanya menentukan tujuan pesan:

PHP
error_log(
    "Kupon tidak dikenali: " . $kode,
    3,
    "/home/akun/logs/kupon.log"
);

Nilai 0 mengirim pesan ke pencatat bawaan PHP mengikuti direktif tadi, sementara 1 mengirimkannya sebagai email. Nilai 3 menambahkan pesan ke berkas yang Anda tentukan, dan 4 menyerahkannya langsung ke lingkungan yang menjalankan PHP. Perlu diperhatikan, pada tipe 3 baris baru tidak ditambahkan otomatis, jadi tuliskan sendiri \n di akhir pesan.

Ada satu jebakan yang layak diingat. Kalau parameter kedua bernilai 0, fungsi error_log() selalu mengembalikan true, terlepas dari apakah pesannya benar-benar tercatat atau tidak. Jadi jangan memakai nilai baliknya sebagai bukti bahwa pencatatan berhasil.

Membedah Satu Baris Error Log Apache

Cara tercepat memahami error log adalah dengan membaca satu barisnya secara utuh. Berikut satu entri dari web server Apache versi 2.4:

TEXT
[Sat Sep 05 14:22:07.512843 2026] [core:error]
[pid 24817:tid 140355097]
[client 180.245.12.34:52310]
AH00124: Request exceeded the limit of 10
internal redirects due to probable
configuration error

Di dalam berkas aslinya, entri di atas berada pada satu baris panjang. Kami memenggalnya di sini agar tetap terbaca di layar ponsel.

Baris itu terdiri dari lima bagian yang selalu muncul berurutan:

  1. Waktu: [Sat Sep 05 14:22:07.512843 2026], dicatat sampai enam angka di belakang koma agar peristiwa yang berdekatan tetap bisa diurutkan.
  2. Sumber dan tingkat keparahan: [core:error] berarti pesan datang dari modul inti Apache dengan tingkat error.
  3. Proses yang menangani: [pid 24817:tid 140355097] adalah nomor proses dan nomor thread, berguna saat menelusuri satu permintaan di antara ratusan yang berjalan bersamaan.
  4. Pengunjung yang memicunya: [client 180.245.12.34:52310] adalah alamat IP dan nomor port pengunjung.
  5. Kode dan pesan: AH00124 adalah nomor unik pesan Apache, diikuti keterangannya.

Baris error log Apache dipecah lima: waktu, modul dan level, nomor proses, IP pengunjung, lalu kode AH00124.Baris error log Apache dipecah lima: waktu, modul dan level, nomor proses, IP pengunjung, lalu kode AH00124.

Kode berawalan AH inilah yang paling berguna. Nomornya tetap sama di semua bahasa dan semua sistem operasi, sehingga mencarinya jauh lebih akurat daripada mencari potongan kalimat pesannya. Contoh di atas, misalnya, menandakan permintaan terjebak dalam pengalihan yang berputar lebih dari sepuluh kali. Penyebab tersering kasus ini adalah aturan pengalihan yang saling menunjuk di dalam file .htaccess.

Bentuk Error Log Nginx dan PHP

Format baris berbeda antar-perangkat lunak, tetapi pertanyaan yang dijawabnya sama. Berikut satu baris dari Nginx:

TEXT
2026/09/05 14:22:07 [error] 2817#2817: *10482
open() "/home/akun/public_html/gambar.jpg"
failed (2: No such file or directory),
client: 180.245.12.34, server: contoh.co.id,
request: "GET /gambar.jpg HTTP/1.1"

Nginx menaruh waktu dan tingkat keparahan di depan, lalu nomor proses, lalu pesan teknisnya, dan menutup dengan konteks permintaan. Tingkat pencatatan Nginx diatur lewat direktif dengan bentuk error_log file [level];, yang nilai bawaannya adalah error_log logs/error.log error;.

Sementara itu, pesan yang berasal dari PHP punya bentuk yang lebih ringkas:

TEXT
[05-Sep-2026 14:22:07 UTC] PHP Fatal error:
Uncaught Error: Call to undefined function
kirim_notifikasi() in
/home/akun/public_html/kirim.php:48

Baris ini yang paling langsung menunjuk penyebab, karena menyebutkan jalur file dan nomor baris sekaligus. Angka 48 di ujung adalah baris tempat kesalahan terjadi. Dengan informasi sedetail itu, perbaikan bisa dimulai tanpa menebak sama sekali.

Delapan Tingkat Keparahan dan Level Mana yang Benar-Benar Dicatat

Setiap pesan diberi tingkat keparahan atau log level, dan server hanya menuliskan pesan yang tingkatnya sama atau lebih gawat daripada ambang yang disetel. Prinsip ambang ini penting: menaikkan ambang berarti sebagian pesan sengaja dibuang sebelum sempat ditulis.

Apache dan Nginx mengenal delapan tingkat yang sama, hanya berbeda urutan penyebutannya di dokumentasi masing-masing. Dari yang paling gawat ke yang paling ringan:

TingkatArti singkat
emergsistem tidak bisa dipakai sama sekali
alertperlu tindakan segera
critkondisi kritis
errorada yang gagal dijalankan
warntidak wajar, tetapi belum tentu merusak
noticenormal namun cukup penting untuk dicatat
infoketerangan biasa
debugrincian untuk penelusuran kode

Apache mengatur ambangnya lewat direktif LogLevel, dengan nilai bawaan warn. Di bawah debug, Apache masih menyediakan delapan tingkat tambahan bernama trace1 sampai trace8 untuk penelusuran yang sangat rinci.

Nginx memakai nilai bawaan error, yang lebih ketat. Konsekuensinya konkret: pada konfigurasi bawaan Nginx, pesan bertingkat warn dan notice tidak akan pernah muncul di error log Anda. Kalau sebuah gejala tidak terlihat jejaknya, ada kemungkinan pesannya memang tersaring, bukan tidak pernah terjadi.

Ambang level log: Nginx bawaan error menulis emerg sampai error, Apache bawaan warn juga menulis warn, sisanya dibuang.Ambang level log: Nginx bawaan error menulis emerg sampai error, Apache bawaan warn juga menulis warn, sisanya dibuang.

Di Mana Error Log Tersimpan dan Cara Membukanya di cPanel

Letak berkasnya bergantung pada jenis layanan yang Anda pakai. Ada tiga cara melihat error log, dan berikut urutannya dari yang paling mudah.

Tiga jalur membuka error log: menu Errors cPanel yang dibatasi 300 entri, File Manager, lalu SSH ke /var/log/.Tiga jalur membuka error log: menu Errors cPanel yang dibatasi 300 entri, File Manager, lalu SSH ke /var/log/.

Pertama, menu Errors di cPanel. Ini jalur tercepat bagi pengguna layanan web hosting, karena tidak menuntut satu perintah pun. Masuk ke cPanel, buka grup Metrics, lalu pilih Errors. Halaman itu menampilkan entri terbaru dari error log web server dengan urutan terbalik, sehingga masalah paling baru berada di paling atas.

Antarmuka ini punya dua batas yang perlu Anda ketahui sejak awal. Ia hanya menampilkan maksimal 300 entri terakhir, sehingga masalah yang lebih lama harus dicari langsung di berkasnya. Selain itu, isinya diambil dari log Apache saja. Kalau server Anda memakai Nginx, halaman Errors tetap menampilkan catatan dari Apache, bukan dari Nginx.

Kedua, berkas error_log di dalam folder website. Buka File Manager, lalu telusuri public_html dan subfoldernya. PHP kerap menuliskan pesan ke berkas bernama error_log di direktori tempat skrip yang bermasalah berada. Karena itu Anda bisa menemukan beberapa berkas dengan nama sama di folder yang berbeda-beda.

Ketiga, direktori /var/log/ lewat SSH. Jalur ini untuk pengguna VPS atau server sendiri yang punya akses penuh. Perintah berikut menampilkan sepuluh baris terakhir dan terus memperbarui layar setiap ada catatan baru:

Bash
tail -f -n 10 /var/log/apache2/error.log

Pada server cPanel, error log Apache untuk seluruh server umumnya berada di /usr/local/apache/logs/error_log, sementara log cPanel sendiri berkumpul di /usr/local/cpanel/logs/. Jalur pastinya dapat berbeda mengikuti sistem operasi dan versi yang dipasang.

Kenapa Error Log Anda Kosong

Pertanyaan ini muncul hampir sesering pertanyaan cara membukanya. Website jelas menampilkan halaman putih, tetapi error log tidak berisi apa-apa. Ada lima sebab yang paling sering, dan semuanya bisa diperiksa satu per satu.

Lima sebab error log kosong beserta nilai bawaannya: log_errors Off, error_log kosong, ambang Nginx error.Lima sebab error log kosong beserta nilai bawaannya: log_errors Off, error_log kosong, ambang Nginx error.

  1. Pencatatan error PHP memang belum dinyalakan. Nilai bawaan PHP untuk pengaturan log_errors adalah mati. Yang menyalakannya adalah berkas contoh php.ini-production bawaan PHP, dan berkas itu belum tentu dipakai di server Anda.
  2. Tujuan pencatatan tidak diarahkan ke mana pun. Nilai bawaan direktif error_log adalah kosong. Ketika kosong, pesan PHP diserahkan ke pencatat lingkungan yang menjalankannya. Akibatnya pesan Anda sebenarnya ada di error log Apache, bukan di berkas yang sedang Anda buka.
  3. Ambang tingkat keparahan terlalu tinggi. Seperti dijelaskan sebelumnya, pesan bertingkat warn dan notice tersaring pada konfigurasi bawaan Nginx.
  4. Kesalahan terjadi sebelum PHP sempat berjalan. Aturan yang salah di .htaccess membuat Apache membalas dengan kode 500 tanpa pernah menjalankan satu baris PHP pun. Pesannya hanya ada di error log web server. Tindak lanjutnya kami bahas terpisah di panduan mengatasi 500 Internal Server Error.
  5. Berkas log tidak dapat ditulis. Kalau direktori tujuannya tidak memberi izin tulis kepada pengguna web server, catatan gagal disimpan tanpa peringatan apa pun di layar.

Justru kebalikannya juga perlu dipahami. Pada server produksi yang mengikuti anjuran resmi PHP, pengaturan display_errors sengaja dimatikan sementara log_errors dinyalakan. Halaman putih kosong dengan error log yang terisi bukan tanda kerusakan, melainkan perilaku yang memang dirancang agar pesan teknis tidak terbaca pengunjung.

Cara Mengaktifkan dan Mematikan Error Log di cPanel

Kalau ternyata pencatatan memang belum menyala, Anda bisa menyalakannya sendiri tanpa akses SSH. Menu yang dipakai bernama MultiPHP INI Editor, dan letaknya ada di grup Software pada cPanel.

Menu itu menyediakan dua mode. Basic Mode menampilkan direktif sebagai isian siap ubah, dan direktif apa saja yang muncul di sana bergantung pada versi PHP yang dipakai domain tersebut. Editor Mode membuka isi php.ini sebagai teks biasa, sehingga direktif yang tidak tersedia di Basic Mode tetap dapat Anda tambahkan sendiri.

Pilih domain Anda lebih dulu, lalu pastikan tiga baris berikut ada di Editor Mode:

TEXT
log_errors = On
error_log = /home/akun/logs/php-errors.log
display_errors = Off

Baris pertama menyalakan pencatatan, baris kedua menentukan berkas tujuannya, dan baris ketiga menahan pesan agar tidak tampil di layar pengunjung. Ganti akun dengan nama pengguna cPanel Anda, dan pastikan folder tujuannya sudah dibuat lebih dulu.

Untuk mematikannya kembali, ubah baris pertama menjadi log_errors = Off. Mematikan pencatatan sebenarnya jarang menjadi jawaban yang tepat. Alasan yang biasanya melatarbelakanginya adalah berkas log yang membengkak, dan itu lebih baik diselesaikan dengan memperbaiki sumber errornya.

Error Log WordPress dan Tiga Konstanta wp-config

WordPress menyediakan jalurnya sendiri lewat tiga konstanta yang ditulis di wp-config.php, tepat di atas baris bertanda /* That's all, stop editing! */:

PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Baris pertama menyalakan mode debug, dan tanpanya dua baris berikutnya tidak berpengaruh. Baris kedua memerintahkan WordPress menulis pesan ke berkas, yang secara bawaan berada di wp-content/debug.log. Baris ketiga menahan pesan agar tidak ikut tercetak di dalam halaman yang dilihat pengunjung.

Ketiganya bernilai mati secara bawaan, kecuali WP_DEBUG_DISPLAY yang bernilai menyala. Kalau Anda ingin menyimpan berkasnya di luar folder website agar tidak dapat diakses dari internet, isi konstanta kedua dengan jalur lengkap:

PHP
define( 'WP_DEBUG_LOG',
    '/home/akun/logs/wp-errors.log' );

Dokumentasi resmi WordPress menyatakan konstanta debug tidak disarankan dipakai di situs yang sudah tayang. Nyalakan hanya selama menelusuri masalah, lalu kembalikan ke false setelah selesai.

Kelemahan dan Hal yang Perlu Anda Pertimbangkan

Error log sangat berguna, tetapi ada empat hal yang sebaiknya Anda antisipasi.

Pertama, satu kesalahan bisa menghasilkan ribuan baris identik. Nilai bawaan pengaturan ignore_repeated_errors adalah mati, sehingga error yang sama dari baris kode yang sama ditulis berulang setiap kali dipicu. Pada halaman yang sering dibuka, berkas log dapat membengkak sampai memenuhi kuota hosting dalam hitungan jam.

Kedua, pesan panjang dapat terpotong. PHP dahulu membatasi panjang catatan lewat pengaturan log_errors_max_len dengan nilai bawaan 1024 byte. Pengaturan itu ditandai usang pada PHP 8.0 dan dihapus pada PHP 8.1, sehingga perilakunya berbeda antar versi. Kalau jejak kesalahan terlihat menggantung di tengah kalimat, periksa versi PHP yang sedang dipakai.

Ketiga, isinya lebih sensitif daripada dugaan banyak orang. Error log memuat alamat IP pengunjung, struktur folder di server, nama berkas, dan kadang potongan data yang sedang diproses. Karena itu berkasnya sebaiknya tidak dibiarkan berada di dalam public_html tanpa perlindungan, sebab berkas di sana berpotensi terbuka bagi siapa pun yang menebak alamatnya.

Keempat, error log tidak mencatat semua jenis kegagalan. Masalah yang terjadi di sisi peramban pengunjung, misalnya skrip JavaScript yang gagal, sama sekali tidak tersentuh catatan di server. Sebagai kebiasaan yang wajar, periksa error log setidaknya sekali sebulan pada website yang aktif, dan segera setelah setiap pembaruan tema atau plugin.

Pertanyaan yang Sering Muncul

Apa beda error log dan access log?

Access log mencatat semua permintaan yang masuk, sedangkan error log hanya mencatat yang gagal. Access log berguna untuk melihat pola kunjungan, error log untuk menemukan penyebab masalah.

Bagaimana cara cek error log di cPanel?

Masuk ke cPanel, buka grup Metrics, lalu pilih Errors. Halaman itu menampilkan 300 entri terakhir dari log Apache. Untuk catatan yang lebih lama, buka berkasnya langsung lewat File Manager.

Kenapa berkas error_log muncul di banyak folder website saya?

Karena PHP menuliskan pesan ke direktori tempat skrip yang bermasalah berada. Setiap folder yang pernah memicu error dapat memiliki berkasnya sendiri. Mengarahkan direktif error_log ke satu jalur tetap akan menyatukannya.

Apakah error log perlu dimatikan di website yang sudah tayang?

Sebaiknya tidak. Yang dimatikan di website tayang adalah penampilan pesan di layar pengunjung, bukan pencatatannya. Tanpa catatan, Anda kehilangan satu-satunya petunjuk saat terjadi masalah.

Di mana error log WordPress tersimpan?

Di wp-content/debug.log, dan berkas itu baru terbentuk setelah WP_DEBUG dan WP_DEBUG_LOG bernilai true di wp-config.php.

Apakah error log yang menumpuk memakan kuota hosting?

Ya. Berkas log dihitung sebagai pemakaian disk seperti berkas lain. Pada kasus error yang terus berulang, ukurannya dapat bertambah sangat cepat sehingga perlu dipangkas.

Di mana error log MySQL pada layanan hosting?

Pada hosting bersama, error log MySQL berada di tingkat server dan hanya dapat dibaca administrator, sehingga tidak muncul di cPanel Anda. Yang bisa Anda lihat adalah pesan kegagalan koneksi database yang tercatat di error log PHP.

Bagaimana melihat log error di komputer Windows?

Windows tidak memakai berkas teks seperti Linux, melainkan Event Viewer yang dibuka lewat perintah eventvwr.msc. Catatannya terbagi ke dalam kategori Application, Security, dan System.

Kesimpulan

Error log adalah catatan otomatis berisi setiap kegagalan yang terjadi di website Anda, lengkap dengan waktu, sumber, tingkat keparahan, dan pesan aslinya. Kita sudah melihat bahwa satu nama itu dipakai untuk tiga hal berbeda. Ada berkasnya, ada pengaturan tujuan pencatatan di php.ini, dan ada fungsi PHP untuk menulis pesan sendiri. Kita juga membedah wujud barisnya pada Apache, Nginx, dan PHP, serta memahami bahwa ambang tingkat keparahan menentukan pesan mana yang benar-benar ditulis.

Untuk sebagian besar pengguna hosting, menu Errors di cPanel sudah memadai, dengan catatan isinya terbatas pada 300 entri terakhir dari Apache. Kalau Anda memakai VPS atau membutuhkan riwayat lebih panjang, membuka berkas di /var/log/ secara langsung memberi gambaran yang jauh lebih lengkap. Yang terpenting, jadikan membuka error log sebagai langkah pertama saat website bermasalah, bukan langkah terakhir setelah kehabisan dugaan. Semoga artikel ini membantu.