Latihan 1 dari materi Structured Logging di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function di kode awal. LOG_LEVELS, pemanggilan, dan dua console.log di bawahnya sudah ada, biarkan begitu.
createLogger(context): kembalikan object dengan tiga method, info(msg, meta), warn(msg, meta), dan error(msg, meta). Setiap method mencetak satuconsole.log berisi JSON.stringify dari object dengan field ini, berurutan: level (nama method-nya), timestamp (string tetap "2024-01-01"), context, message (isi msg), lalu semua isi meta (...meta).
filterLogs(logs, level): kembalikan log yang level-nya sama dengan atau lebih tinggi dari level, memakai angka di LOG_LEVELS (info 1, warn 2, error 3).
Baris pertama dicek utuh, persis seperti di atas: kelima field-nya, termasuk "timestamp":"2024-01-01" dan "message":"User login", dengan urutan yang sama. Ada juga cek dengan data lain: filterLogs dengan minimum "warn" harus meloloskan warn dan error saja, dan createLogger("kas").warn harus berupa function.
Hint
Logger mengembalikan object berisi tiga function yang semuanya memanggil satu function penulis yang sama. Penyaringan memakai angka level dari LOG_LEVELS, bukan nama level-nya.
Di dalam createLogger, buat function write(level, msg, meta) yang mencetak console.log(JSON.stringify({ ... })). Lalu return { info: (msg, meta) => write("info", msg, meta), warn: ..., error: ... }. Di filterLogs, ambil angka minimum dari LOG_LEVELS[level], lalu filter.