Structured logging
- Node.js kursu
- İleri seviye
- Ders 64/83
- 5 dk
Structured logging ve JSON formatını öğrenirsin.
Structured logging
Yapısal günlükleme (structured logging), logları düz metin yerine JSON gibi yapısal biçimde yazmaktır. Bu, logların programatik olarak aranmasını ve filtrelenmesini kolaylaştırır. Üretim sistemlerinde standarttır.
Örnek: logger.info({ user: "Ayşe", action: "login" });. Winston bunu JSON olarak yazdırır. Düz metin loglarında user=Ayşe action=login gibi bir dize olur; bu, ayrıştırmak zor. JSON loglarda ise her alan bir anahtardır; user alanına göre arama yapmak kolaydır. Winston'ın format.json() ile tüm logları JSON'a çevirebilirsin. Yapısal loglar, ELK (Elasticsearch, Logstash, Kibana) gibi merkezi log sistemlerinde çok değerlidir.
winston.format.json()
Winston'ın format.json() ile tüm logları JSON olarak yazdırabilirsin. Bu, yapısal loglamanın en kolay yolu. Format, transport'lardan önce uygulanır.
Örnek: winston.createLogger({ format: winston.format.json(), transports: [new winston.transports.Console()] });. Bu logger her logu JSON olarak yazar. Çıktı: {"level":"info","message":"...","timestamp":"..."}. winston.format.combine() ile birden çok format birleştirilebilir: winston.format.combine(winston.format.timestamp(), winston.format.json()). Bu, loga zaman damgası ekler ve JSON olarak yazar. Format, logların biçimini global olarak belirler; her transport için ayrı format da verilebilir.
Uygulama JSON formatlı logger oluştur
winston modülünü içe aktar. winston.createLogger({ format: winston.format.json(), transports: [new winston.transports.Console()] }) ile JSON formatlı logger oluştur. logger.info("Mesaj") yaz.
Başlangıç kodu
// winston içe aktar
// buraya yaz
// JSON formatlı logger oluştur
// buraya yaz
// info log yaz
// buraya yazÖrnek çözüm
const winston = require("winston");
const logger = winston.createLogger({
format: winston.format.json(),
transports: [new winston.transports.Console()]
});
logger.info("Mesaj");Beklenen çıktı
Mesaj
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yapısal loglama neden kullanılır?
logger.info({ user: "Ayşe" })- Logları aranabilir ve filtrelenir hale getirmek için Doğru cevap
- Daha hızlı ağ için
- Daha az disk kullanmak için
- Daha renkli konsol çıktısı için
Açıklama: Yapısal loglama logları aranabilir yapar.
2 format.json çağrısını tamamla
format: winston.format.____(),
format: winston.format.json(),
Açıklama: format.json() ile JSON formatı kullanılır.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
format.json |
JSON olarak yazar |
format.timestamp |
Zaman damgası ekler |
format.combine |
Formatları birleştirir |
nesne geçirme |
Yapısal loglama |