Node.js
Structured logging
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.
Örnek çözümü göster
const winston = require("winston");
const logger = winston.createLogger({
format: winston.format.json(),
transports: [new winston.transports.Console()]
});
logger.info("Mesaj");
Kendini test et
-
Yapısal loglama neden kullanılır?
logger.info({ user: "Ayşe" })
- Logları aranabilir ve filtrelenir hale getirmek için
- Daha hızlı ağ için
- Daha az disk kullanmak için
- Daha renkli konsol çıktısı için
Cevabı göster
Logları aranabilir ve filtrelenir hale getirmek için — Yapısal loglama logları aranabilir yapar.
-
format.json çağrısını tamamla
format: winston.format.____(),
Cevabı göster
format: winston.format.json(),
-
Parçayı rolüne eşle
- format.json
- JSON olarak yazar
- format.timestamp
- Zaman damgası ekler
- format.combine
- Formatları birleştirir
- nesne geçirme
- Yapısal loglama
Sıradaki ders: Pino