---
title: "Cara Membaca Log Aplikasi dengan journalctl"
description: "Perintah journalctl yang paling berguna untuk membaca log layanan systemd, menyaring waktu dan prioritas, memantau langsung, dan menjaga ukuran journal."
url: "https://nivelva.com/insight/cara-membaca-log-aplikasi-journalctl"
category: "Server \u0026 Infrastruktur"
tags: ["journalctl","systemd","log linux","troubleshooting","server"]
author: "Theresia Candiawan"
published: "2026-11-07T04:09:00+07:00"
updated: "2026-11-07T04:09:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Membaca Log Aplikasi dengan journalctl

> **Jawaban singkat:** journalctl membaca log yang dikumpulkan systemd-journald. Pakai -u untuk memilih layanan, --since dan --until untuk rentang waktu, -p err untuk pesan error saja, dan -f untuk memantau langsung. Simpan journal secara persisten agar log tidak hilang setelah reboot.

Cara tercepat membaca log aplikasi di server Linux modern adalah `journalctl -u nama-layanan`, lalu dipersempit dengan filter waktu, prioritas, atau boot. Hampir semua distro populer (Ubuntu, Debian, AlmaLinux) memakai systemd, dan setiap layanan yang dijalankan lewat systemd otomatis mengirim keluarannya ke journal.

Kenapa ini penting? Saat aplikasi mati jam dua pagi, kamu tidak punya waktu membuka puluhan file di `/var/log` satu per satu. Dengan beberapa perintah journalctl, kamu bisa langsung melihat apa yang terjadi tepat sebelum layanan berhenti, tanpa tebak-tebakan.

## Apa itu journal dan bedanya dengan file log biasa?

Journal adalah tempat penyimpanan log milik `systemd-journald`. Isinya bukan teks biasa, melainkan format biner yang terindeks. Setiap baris log membawa data tambahan: nama layanan (unit), PID, user, prioritas, dan nomor boot. Karena terindeks, menyaring log satu layanan dari jutaan baris tetap cepat.

File log klasik seperti `/var/log/nginx/error.log` tetap ada bila aplikasinya menulis file sendiri. Banyak aplikasi menulis ke dua tempat sekaligus. Untuk gambaran lokasi file log klasik, baca [lokasi log penting di Linux](https://nivelva.com/insight/log-linux-penting).

## Perintah dasar yang paling sering dipakai

Berikut perintah yang akan kamu ketik hampir setiap hari:

- `journalctl -u nginx` menampilkan semua log layanan nginx dari yang paling lama.
- `journalctl -u nginx -e` langsung melompat ke bagian paling akhir.
- `journalctl -u nginx -n 100` menampilkan 100 baris terakhir saja.
- `journalctl -u nginx -f` memantau log secara langsung, seperti `tail -f`. Tekan `Ctrl+C` untuk berhenti.
- `journalctl -u nginx -u php8.3-fpm` menggabungkan log dua layanan dalam satu urutan waktu.

Nama unit boleh ditulis tanpa akhiran `.service`. Kalau tidak yakin nama unitnya, cari dulu dengan `systemctl list-units --type=service`.

Secara bawaan journalctl membuka hasil di pager (`less`). Gunakan `/kata` untuk mencari, `G` untuk ke akhir, dan `q` untuk keluar. Tambahkan `--no-pager` bila hasilnya ingin disalurkan ke perintah lain seperti `grep`.

## Bagaimana menyaring log berdasarkan waktu?

Ini filter yang paling menghemat waktu. Opsi `--since` dan `--until` menerima format tanggal lengkap maupun kata relatif:

```bash
journalctl -u myapp --since "2026-11-14 22:00" --until "2026-11-14 23:30"
journalctl -u myapp --since "1 hour ago"
journalctl -u myapp --since today
journalctl -u myapp --since yesterday --until today
```

Pastikan zona waktu server sudah benar, karena waktu yang kamu ketik dibaca sesuai zona waktu sistem. Kalau jam server meleset, cocokkan dulu dengan panduan [mengatur zona waktu dan sinkron jam server](https://nivelva.com/insight/cara-mengatur-zona-waktu-sinkron-jam-server-linux).

## Bagaimana menampilkan error saja?

Setiap pesan journal punya tingkat prioritas dari 0 sampai 7. Opsi `-p` menampilkan prioritas tersebut dan yang lebih parah.

| Angka | Nama | Arti singkat |
|:--|:--|:--|
| 0 | emerg | Sistem tidak bisa dipakai |
| 1 | alert | Harus ditangani segera |
| 2 | crit | Kondisi kritis |
| 3 | err | Error |
| 4 | warning | Peringatan |
| 5 | notice | Normal tapi penting |
| 6 | info | Informasi |
| 7 | debug | Pesan debug |

Contoh pemakaian:

```bash
journalctl -p err -b            # semua error sejak boot terakhir
journalctl -u myapp -p warning  # peringatan dan yang lebih parah dari myapp
journalctl -p 3..4 --since today
```

Satu catatan: prioritas hanya berguna bila aplikasinya mengirim tingkat yang benar. Aplikasi yang sekadar mencetak ke stdout biasanya tercatat sebagai `info`, walaupun isinya pesan error. Untuk kasus seperti itu, pakai pencarian teks.

## Mencari kata tertentu di dalam log

journalctl punya opsi `-g` (atau `--grep`) untuk mencari pola di isi pesan:

```bash
journalctl -u myapp -g "timeout"
journalctl -u myapp -g "(?i)connection refused"
```

Awalan `(?i)` membuat pencarian tidak membedakan huruf besar dan kecil. Bila versi journalctl di servermu dibangun tanpa dukungan grep, gunakan cara lama: `journalctl -u myapp --no-pager | grep -i timeout`.

Filter lain yang berguna saat melacak proses tertentu:

- `journalctl _PID=1234` untuk log dari satu PID.
- `journalctl _COMM=sshd` untuk log berdasarkan nama program.
- `journalctl -k` untuk pesan kernel saja, mirip `dmesg`, misalnya untuk melihat proses yang dibunuh karena kehabisan memori (OOM).

## Melihat log dari boot sebelumnya

Server tiba-tiba restart dan kamu ingin tahu sebabnya? Gunakan opsi `-b`:

```bash
journalctl --list-boots     # daftar boot yang tersimpan
journalctl -b -1 -e         # log boot sebelumnya, langsung ke akhir
journalctl -b -1 -p err     # error di boot sebelumnya
```

Bagian akhir log boot sebelumnya sering memberi petunjuk, misalnya kernel panic, OOM, atau perintah shutdown dari user.

> **Log hilang setelah reboot?:**
>
> Bila `--list-boots` hanya menampilkan satu boot, journal di servermu kemungkinan disimpan di memori (`/run/log/journal`) dan terhapus setiap reboot. Buat folder `/var/log/journal`, atau setel `Storage=persistent` di `/etc/systemd/journald.conf`, lalu jalankan `systemctl restart systemd-journald`.

## Mengubah format keluaran

Opsi `-o` mengatur tampilan log:

- `-o short-iso` menampilkan waktu dalam format ISO, enak untuk dicocokkan dengan log lain.
- `-o cat` hanya menampilkan isi pesan tanpa waktu dan nama host.
- `-o json-pretty` menampilkan semua kolom data, berguna untuk melihat metadata lengkap satu pesan.
- `-o verbose` menampilkan setiap kolom dengan rinci.

Tambahkan `-x` bila ingin journalctl menyertakan penjelasan tambahan untuk pesan tertentu dari katalog systemd.

## Bagaimana menjaga ukuran journal agar tidak memenuhi disk?

Journal bisa membesar pelan-pelan. Cek pemakaiannya:

```bash
journalctl --disk-usage
```

Untuk membersihkan arsip lama:

```bash
sudo journalctl --vacuum-size=500M   # sisakan maksimal sekitar 500 MB
sudo journalctl --vacuum-time=2weeks # hapus arsip lebih tua dari 2 minggu
```

Agar batasnya permanen, setel `SystemMaxUse=` di `/etc/systemd/journald.conf`, misalnya `SystemMaxUse=500M`, lalu restart `systemd-journald`. Perintah vacuum hanya menghapus file arsip, bukan file journal yang sedang aktif. Kalau disk sudah telanjur penuh, panduan [mencari dan membersihkan disk server yang penuh](https://nivelva.com/insight/disk-server-penuh) membantu menemukan penyebab lain.

## Siapa yang boleh membaca journal?

User biasa hanya bisa melihat log miliknya sendiri. Untuk membaca log sistem tanpa `sudo`, masukkan user ke grup `systemd-journal` (di Ubuntu dan Debian, grup `adm` juga diberi akses):

```bash
sudo usermod -aG systemd-journal namauser
```

Login ulang agar keanggotaan grup berlaku. Cara ini lebih aman daripada memberi akses sudo penuh hanya untuk membaca log.

## Pertanyaan yang sering diajukan

### Apakah journalctl menggantikan file di /var/log?

Tidak selalu. Di banyak distro, rsyslog masih menulis salinan ke file seperti /var/log/syslog. Aplikasi yang menulis file log sendiri juga tetap menulis ke filenya.

### Kenapa log aplikasi saya tidak muncul di journalctl?

Biasanya karena aplikasi tidak dijalankan lewat systemd, atau menulis log langsung ke file tanpa mencetak ke stdout dan stderr. Jalankan aplikasi sebagai service systemd agar keluarannya tertangkap journal.

### Bagaimana mengekspor log untuk dikirim ke developer?

Simpan ke file teks dengan perintah seperti journalctl -u myapp --since today --no-pager > myapp.log, lalu kirim filenya. Periksa dulu agar tidak ada password atau token di dalamnya.

## Sumber

- <https://www.freedesktop.org/software/systemd/man/latest/journalctl.html>
- <https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-membaca-log-aplikasi-journalctl
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
