Tur /var/log

Tata letak log sistem dan rotasi log.

Daftar isi

Direktori /var/log adalah tempat penyimpanan utama berkas log pada sistem Linux, yaitu catatan peristiwa yang ditulis oleh sistem dan aplikasi selama sistem berjalan. Topik ini menelusuri isi direktori tersebut dengan perintah baca sederhana, membaca satu berkas log nyata baris demi baris, lalu menjelaskan rotasi log beserta berkas konfigurasi logrotate yang mengaturnya. Mekanisme rotasi ditutup dengan simulasi manual agar dua langkah intinya terlihat tanpa perantara.

Tur isi /var/log#

Cara paling langsung untuk mengenal direktori ini adalah membaca daftar isinya beserta ukuran dan waktu ubah setiap berkas. Contoh berikut menampilkan beberapa entri yang paling sering dirujuk, yaitu tautan README beserta tiga berkas log teksnya.

bash
# membaca entri log utama beserta ukurannya
ls -lh /var/log/README /var/log/alternatives.log /var/log/dpkg.log /var/log/fontconfig.log
text Keluaran
lrwxrwxrwx 1 root root   39 Oct 28 13:01 /var/log/README -> ../../usr/share/doc/systemd/README.logs
-rw-r--r-- 1 root root  16K Oct 28 13:09 /var/log/alternatives.log
-rw-r--r-- 1 root root 432K Oct 28 13:09 /var/log/dpkg.log
-rw-r--r-- 1 root root 6.1K Oct 28 13:09 /var/log/fontconfig.log

Entri README bertanda -> adalah symlink, yaitu tautan ke dokumen bawaan paket systemd yang menjelaskan letak log. Berkas dpkg.log berukuran 432K karena merekam seluruh kegiatan pengelola paket sejak container dibangun, sedangkan alternatives.log mencatat pemilihan alternatif perintah dan fontconfig.log mencatat pembacaan font oleh sistem. Ketiganya berformat teks biasa, sehingga dapat dibaca dengan perkakas teks mana pun.

Selain keempat entri itu, direktori yang sama memuat bagian-bagian lain yang perlu dikenal. Direktori apt menyimpan log apt berupa history.log dan term.log. Direktori journal milik grup systemd-journal adalah tempat penyimpanan journal systemd, yaitu kumpulan log biner milik systemd, tetapi kosong di sini karena container tidak menjalankan systemd sebagai proses pertamanya.

Direktori private berizin drwx------ sehingga isinya hanya terbaca oleh root. Berkas wtmp, btmp, dan lastlog dengan kepemilikan grup utmp menyimpan riwayat login dalam format biner, dan ketiganya berukuran 0 byte di sini karena belum ada aktivitas login. Terakhir, zcode-driver.log adalah log khusus lingkungan sandbox ini, bukan berkas bawaan Ubuntu.

Membaca satu berkas log#

Sebagian besar berkas log berformat teks biasa, sehingga seluruh perkakas pembacaan teks dapat digunakan langsung. Contoh berikut membaca empat baris pertama dpkg.log.

bash
# empat baris pertama log pengelola paket
head -n 4 /var/log/dpkg.log
text Keluaran
2026-10-28 13:01:38 startup archives unpack
2026-10-28 13:01:38 upgrade bsdutils:amd64 1:2.41-5 1:2.41.5-0+deb13u1
2026-10-28 13:01:38 status half-configured bsdutils:amd64 1:2.41-5
2026-10-28 13:01:39 status unpacked bsdutils:amd64 1:2.41-5

Setiap barisnya diawali tanggal dan waktu dengan presisi detik, diikuti aksi yang terjadi, lalu rinciannya. Baris kedua misalnya merekam pembaruan paket bsdutils dari versi 1:2.41-5 ke 1:2.41.5-0+deb13u1. Format yang tertata seperti ini mudah disaring, misalnya grep status /var/log/dpkg.log untuk mengumpulkan semua baris status, atau tail -n 20 untuk membaca yang paling baru.

Struktur waktu, aksi, dan rincian ini berlaku umum pada log Debian. Berkas alternatives.log mengikuti pola yang serupa, dengan setiap pesan diawali nama alat yang menulisnya, misalnya update-alternatives. Karena setiap baris membawa tanda waktu lengkap, urutan kejadian dapat direkonstruksi dari berkas itu, dan celah panjang antarbaris menunjukkan periode ketika sistem tidak berjalan.

Rotasi log dengan logrotate#

Berkas log tumbuh tanpa henti selama sistem berjalan, sehingga tanpa pengelolaan direktori /var/log akan memenuhi disk. Perkakas logrotate menangani pertumbuhan itu dengan memutar berkas log. Memutar log berarti mengganti namanya menjadi arsip, memampatkan arsip lama, lalu menghapus arsip paling tua ketika jumlahnya melewati batas. Konfigurasinya terpusat di /etc/logrotate.d, dengan satu berkas untuk setiap aplikasi.

bash
# daftar konfigurasi logrotate yang terpasang
ls /etc/logrotate.d/
text Keluaran
alternatives
apt
dpkg
bash
# konfigurasi rotasi untuk log apt
cat /etc/logrotate.d/apt
text Keluaran
/var/log/apt/term.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

/var/log/apt/history.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

Berkas apt di atas mendefinisikan dua blok, yaitu log term.log dan history.log, dengan aturan yang sama. Direktif monthly memutar log sebulan sekali, sedangkan rotate 12 menyimpan dua belas arsip lama sebelum yang tertua dihapus, sehingga riwayat setahun penuh tetap tersedia. Direktif compress memampatkan arsip lama menjadi .gz, missingok mengabaikan log yang belum ada, dan notifempty melewatkan log yang masih kosong. Konfigurasi dpkg yang berada di direktori yang sama menambahkan dua direktif lain. Direktif delaycompress menunda pemampatan arsip terbaru satu periode, sedangkan create 644 root root membuat berkas log pengganti dengan izin tertentu.

Pola nama hasil rotasinya berurutan. Berkas history.log diputar menjadi history.log.1, lalu pada putaran berikutnya bergeser menjadi history.log.2.gz setelah dipampatkan, sampai batas rotate 12 tercapai.

logrotate tidak berjalan terus-menerus sebagai layanan, melainkan dipanggil oleh penjadwal sistem, yaitu cron atau timer systemd, biasanya sekali sehari. Keadaan putaran terakhir dicatat pada berkas status /var/lib/logrotate/status, sehingga rotasi tidak dijalankan dua kali dalam satu periode. Pada container latihan ini logrotate tidak terpasang, sehingga yang dapat ditelusuri hanya berkas konfigurasinya.

Simulasi rotasi secara manual#

Dua langkah inti rotasi, yaitu mengganti nama dan memampatkan, dapat disimulasikan dengan mv dan gzip pada berkas log contoh.

bash
# menyiapkan berkas log contoh
rm -rf /tmp/kerja-tur-log
mkdir -p /tmp/kerja-tur-log
cd /tmp/kerja-tur-log
printf "2026-11-02 09:00:01 layanan mulai\n2026-11-02 09:00:05 permintaan diproses\n2026-11-02 09:00:12 layanan berhenti\n" > aplikasi.log
# memutar log, lalu memampatkan arsip lamanya
mv aplikasi.log aplikasi.log.1
gzip aplikasi.log.1
ls
text Keluaran
aplikasi.log.1.gz

Direktori itu kini hanya berisi aplikasi.log.1.gz, dan itulah wujud log yang telah diputar lalu dipampatkan. Akhiran .1 mengikuti kebiasaan rotasi Unix, yaitu nomor urut dari yang terbaru. Apabila rotasi berjalan lagi, aplikasi.log.1.gz akan bergeser menjadi aplikasi.log.2.gz, dan log baru kembali menempati aplikasi.log.

logrotate mengulang pola yang sama secara otomatis, lengkap dengan pembatasan jumlah arsip dan izin berkas penggantinya. Isi arsip tetap dapat dibaca tanpa memulihkannya terlebih dahulu dengan menggunakan zcat.

bash
# membaca arsip log tanpa memulihkannya
cd /tmp/kerja-tur-log
zcat aplikasi.log.1.gz | head -n 2
text Keluaran
2026-11-02 09:00:01 layanan mulai
2026-11-02 09:00:05 permintaan diproses

Kesalahan umum#

Tiga kesalahan berikut sering muncul saat mengelola log untuk pertama kali.

  • Menghapus berkas log yang sedang ditulis layanan dengan rm. Ruang disknya tidak langsung lepas karena proses masih memegang berkas tersebut melalui file descriptor, yaitu pegangan berkas yang dibuka oleh proses, sampai pegangan itu ditutup. Biarkan rotasi yang bekerja, atau kosongkan berkasnya dengan truncate.
  • Mencari /var/log/syslog atau /var/log/messages di sistem systemd. Berkas itu mungkin tidak ada karena catatannya berada di journal, yang dibaca dengan journalctl pada sistem yang menjalankan systemd.
  • Menyunting konfigurasi logrotate tanpa mengujinya. Uji dengan logrotate -d yang hanya menampilkan rencana rotasi tanpa menjalankannya, sehingga kesalahan penulisan direktif terlihat sebelum berdampak.

Ringkasan#

  • Direktori /var/log menyimpan berkas log teks seperti dpkg.log, log biner login seperti wtmp, dan journal systemd pada sistem yang memakainya.
  • Berkas log teks dibaca dengan perkakas biasa seperti head, tail, dan grep, karena formatnya berupa baris bertanda waktu.
  • logrotate memutar log menurut konfigurasi di /etc/logrotate.d, dengan dua langkah inti yaitu mengganti nama lalu memampatkan arsip lama.

Referensi#