DEV Community

Nandan Ramdani
Nandan Ramdani

Posted on

Best Practice Logging Aplikasi Ringkas, Konsisten, dan Mudah Ditelusuri

Logging adalah komponen penting dalam aplikasi modern. Log yang baik membantu developer melakukan debugging, tim ops melakukan monitoring, dan memudahkan analisis jika terjadi masalah. Sayangnya, banyak aplikasi menulis log secara sembarangan: tidak konsisten, sulit diparsing, atau malah terlalu banyak informasi yang tidak berguna.

Artikel ini membahas cara membuat log aplikasi yang praktis, ringkas, dan konsisten.


1. Bedakan Level Log dengan Benar

Kesalahan umum: semua log dianggap ERROR. Padahal, tidak semua kondisi gagal adalah error aplikasi.

  • DEBUG → informasi detail untuk developer.
  • INFO → event normal, termasuk validasi gagal atau user salah input.
  • WARN → potensi masalah, misalnya request lambat atau dependency mulai bermasalah.
  • ERROR → benar-benar error aplikasi, misalnya exception, dependency mati, query database gagal.

👉 Contoh: user input email salah format → log sebagai INFO, bukan ERROR.


2. Gunakan Format Terstruktur

Format bebas seperti ini:

[INFO] Login gagal untuk user
Enter fullscreen mode Exit fullscreen mode

sulit untuk diproses otomatis.

Gunakan format JSON atau key-value yang konsisten.

{
  "timestamp": "2025-09-16T16:45:01.123Z",
  "level": "INFO",
  "request_id": "req-12345",
  "endpoint": "/auth/register",
  "message": "Validasi gagal",
  "extra": {
    "field": "email",
    "value": "user@@domain"
  }
}
Enter fullscreen mode Exit fullscreen mode

3. Minimal Field yang Harus Ada

Agar log bisa dicari dan dianalisis dengan mudah, gunakan field standar berikut:

  • timestamp → kapan log dibuat (format ISO 8601, UTC).
  • levelDEBUG | INFO | WARN | ERROR.
  • request_id → ID unik untuk trace satu request dari awal sampai akhir.
  • endpoint → API/path yang diakses.
  • message → ringkasan singkat event.

4. Tambahkan Konteks dengan Field Opsional

Tidak semua request butuh detail tambahan, tapi log bisa lebih berguna kalau ada konteks:

  • extra → detail tambahan terkait event. Bisa berupa objek fleksibel, misalnya order_id, amount, atau latency.

Contoh:

{
  "timestamp": "2025-09-16T16:50:20.789Z",
  "level": "WARN",
  "request_id": "req-56789",
  "endpoint": "/payment/process",
  "message": "Request lambat",
  "extra": {
    "latency_ms": 2200,
    "threshold_ms": 2000
  }
}
Enter fullscreen mode Exit fullscreen mode

5. Jangan Log Data Sensitif

Poin klasik tapi penting: jangan pernah log password, token, atau data pribadi sensitif. Kalau memang butuh, gunakan masking atau hashing.


6. Rotasi dan Retensi

Log bisa membengkak dengan cepat. Terapkan:

  • Log rotation → misalnya via logrotate.
  • Retention policy → simpan log sesuai kebutuhan bisnis/regulasi.
  • Aggregator → gunakan ELK, Loki, atau cloud logging untuk pencarian jangka panjang.

Kesimpulan

Logging bukan sekadar menulis console.log(), tapi bagian dari arsitektur aplikasi yang sehat. Prinsip dasarnya:

  • Gunakan level log yang benar → error hanya untuk masalah aplikasi, bukan input user.
  • Log dalam format terstruktur (JSON).
  • Minimal field: timestamp, level, request_id, endpoint, message.
  • Gunakan extra hanya jika perlu.
  • Error code cukup di response API, tidak perlu diduplikasi di log.

Dengan pendekatan ini, log aplikasi akan:

  • Ringkas, tidak berlebihan.
  • Konsisten, mudah dicari.
  • Bermanfaat untuk debugging maupun monitoring.

Top comments (0)