CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

index.js
// winston içe aktar
// buraya yaz

// File transportlı logger oluştur
// buraya yaz

// info log yaz
// buraya yaz

Örnek çözüm

index.js
const winston = require("winston");
const logger = winston.createLogger({
  level: "info",
  transports: [new winston.transports.File({ filename: "app.log" })]
});
logger.info("Kayıt edildi");

Beklenen çıktı

Kayıt edildi

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Transport'ı hedefine eşle

Kavram Anlamı
Console Konsola yazar
File Dosyaya yazar
Http HTTP üç noktasına yazar
transports Transport listesi

2 File transport hangi özellikle dosya adını alır?

index.js
new winston.transports.File({ filename: "app.log" })
  • path
  • file
  • name
  • filename Doğru cevap

Açıklama: filename özelliği dosya adını verir.

3 File transport çağrısını tamamla

Soru
new winston.transports.File({ filename: "____" })
Cevap
new winston.transports.File({ filename: "app.log" })

Açıklama: app.log dosyasına yazılır.

İleri seviye bölümündeki tüm dersler