Node.js
Transports
Winston transports ile çıktı hedefleri öğrenirsin.
Transports
Bir transport, logların nereye gideceğini belirler. Winston'ın yaygın transport'ları: Console (konsola), File (dosyaya), Http (HTTP üç noktasına). Bir logger'a birden çok transport ekleyebilirsin.
Örnek: transports: [new winston.transports.Console(), new winston.transports.File({ filename: "app.log" })]. Bu, logları hem konsola hem app.log dosyasına yazar. Transport'lar bağımsızdır; her biri kendi filtre ve formatına sahip olabilir. Üretimde logları merkezi bir sunucuya da göndermek isteyebilirsin; bunun için HTTP transport'ı kullanılır. Winston, özel transport yazmaya da izin verir. Transport kavramı, Winston'ın esnekliğinin temelidir; tek bir logger ile birden çok hedefe log gönderirsin.
File transport
File transport'ı logları bir dosyaya yazar. filename özelliği dosya adını, level özelliği hangi seviyenin yazılacağını belirler. Üretimde log dosyaları döndürme (rotation) ile büyümesi sınırlandırılır.
Örnek: new winston.transports.File({ filename: "app.log", level: "info" }). Bu transport info ve üzeri logları app.log dosyasına yazar. maxsize ile dosya boyutu sınırı, maxFiles ile dosya sayısı sınırı koyulur. Winston'ın winston-daily-rotate-file eklentisi günlük döndürme yapar. Üretimde log dosyaları hızlı büyür; döndürme olmadan disk dolar. Birden çok transport ile hata loglarını ayrı, bilgi loglarını ayrı dosyalarda tutabilirsin. Bu, log aramayı hızlandırır.
Uygulama Dosya transport'lı logger oluştur
winston modülünü içe aktar. winston.createLogger({ level: "info", transports: [new winston.transports.File({ filename: "app.log" })] }) ile logger oluştur. logger.info("Kayıt edildi") yaz.
Örnek çözümü göster
const winston = require("winston");
const logger = winston.createLogger({
level: "info",
transports: [new winston.transports.File({ filename: "app.log" })]
});
logger.info("Kayıt edildi");
Kendini test et
-
Transport'ı hedefine eşle
- Console
- Konsola yazar
- File
- Dosyaya yazar
- Http
- HTTP üç noktasına yazar
- transports
- Transport listesi
-
File transport hangi özellikle dosya adını alır?
new winston.transports.File({ filename: "app.log" })
Cevabı göster
filename — filename özelliği dosya adını verir.
-
File transport çağrısını tamamla
new winston.transports.File({ filename: "____" })
Cevabı göster
new winston.transports.File({ filename: "app.log" })
Sıradaki ders: Structured logging