@logbrew/sdk 0.1.40, @logbrew/node
0.1.24 ve @logbrew/express 0.1.10 ile çalıştırıldı. Her çıktı bloğu gerçek
çıktıyı gösterir.
Winston veya Pino seçin
İki kütüphane de yapılandırılmış JSON logları yazar. Uygulamanızın zaten kullandığı kütüphaneyle devam edin. LogBrew kurulumu her kütüphane için farklıdır.Bir LogBrew projesi hazırlayın
1
Bir proje anahtarı oluşturun
CLI ile giriş yapın. Bir proje oluşturun. Projenin alım
anahtarını (ingest key) yalnızca sahibinin okuyabildiği bir dosyada
saklayın.CLI anahtarı ekrana yazdırmaz. Canlı ortamda platformunuzun gizli anahtar
yöneticisini kullanın.
2
Paketleri kurun
Paketler Node.js 18.19 veya üstünü gerektirir. Winston’ı, Pino’yu veya
ikisini birden kurun.
3
Anahtarı ve dağıtım bilgilerini ayarlayın
createLogBrewNodeClient() anahtarı LOGBREW_SERVER_API_KEY değişkeninden
okur. Hizmet adı package.json içindeki name değeridir. Farklı bir ad
kullanmak için LOGBREW_SERVICE_NAME değişkenini ayarlayın. Örnekler ES
modüllerini kullanır, bu yüzden package.json içinde "type": "module"
ayarlayın.Node.js log seviyeleri
Her kütüphanenin kendi seviye adları ve sayıları vardır. LogBrew 4 seviye saklar ve asıl seviyeyi meta veride tutar.
Winston’da düşük sayı daha ciddi bir seviyeyi gösterir. Pino’da yüksek sayı daha
ciddi bir seviyeyi gösterir. Canlı ortamda
info ayarlayın. debug seviyesini
yalnızca kısa bir tanı için ayarlayın.
Winston logger
Bu dosyayıwinston-app.js olarak kaydedin. İlk format, logger seviyesinin
altındaki kayıtları hiçbir transport almadan önce atar. LogBrew transport’u
logger’ın yazdığı her kaydı alır, bu yüzden bu filtreye ihtiyaç duyar.
node winston-app.js komutunu çalıştırın. Konsol info veya üstündeki her
kayıt için 1 JSON satırı alır. Yığın izi burada kısaltıldı.
context.* meta verisi olur.
Transport hatanın adını ve mesajını gönderir, yığın izini göndermez. Yığın izini
göndermek için
createLogBrewWinstonTransport() içinde
includeErrorStack: true ayarlayın. Her mesaj bir sonraki sorunda önceki adım
(breadcrumbs) olur. Bunu durdurmak için breadcrumbs: false ayarlayın.
Pino logger
Bu dosyayıpino-app.js olarak kaydedin. installLogBrewPinoInstrumentation()
fonksiyonunu ilk logdan önce bir kez çağırın. Fonksiyon tamamlanan her Pino
kaydını okur. Pino yine kendi hedefine yazar.
node pino-app.js komutunu çalıştırın. Ana makine adı ve yığın izi burada
kısaltıldı.
debug kaydını LogBrew görmeden önce atar.
token alanı LogBrew’de yer almaz. LogBrew kimlik bilgisi, çerez, gövde, sorgu,
URL ve yığın izi alanlarını atar. Pino redact yollarınızı ikinci bir denetim
olarak korur. pid, hostname ve time Pino varsayılanlarıdır, bu yüzden
LogBrew onları kopyalamaz.
Otomatik yakalama 9.x serisinde Pino 9.11 veya üstünü ya da Pino 10.1 veya
üstünü gerektirir. Eski Pino sürümleri için @logbrew/sdk paketindeki
createLogBrewPinoDestination() fonksiyonunu Pino hedefi olarak kullanın.
Geliştirmede Pino çıktısını okumak için çıktıyı pino-pretty aracına gönderin.
Express logger
logbrewMiddleware() her istek için 1 istek span’i oluşturur.
logbrewErrorHandler() hataları sorun olarak bildirir. Bir istek içindeki Pino
logu o isteğin iz kimliğini ve span kimliğini alır. Bu dosyayı express-app.js
olarak kaydedin.
Span adı somut yolu değil, route şablonunu kullanır.
listening on 3000 logunun
izi yoktur, çünkü bu log bir isteğin dışında yazılır.
Middleware kendi istek istemcilerini oluştursun. Süreç genelindeki client
nesnesini logbrewMiddleware() veya logbrewErrorHandler() fonksiyonuna
vermeyin. Middleware her yanıttan sonra kendi istek istemcisini kapatır.
Winston loglarına izi ekleyin
Winston için transport’a etkin izi verin.logbrewTransport nesnesini logger’ın transports listesine ekleyin. Böylece
bir Express isteği içindeki Winston logu isteğin iz kimliğini ve span kimliğini
taşır.
Logları geri okuyun
<trace_id> değerini bir izden veya bir
sorundan kopyalayın. CI’dan veya bir kodlama asistanından okumak için proje
okuma anahtarı (read key) kullanın. Kurulumunuzu
doğrulayın sayfasına bakın.
Log kaybetmeden kapatın
İstemci kuyruktaki olayları ilk olaydan 1 saniye sonra veya 50 olayda gönderir. Olay döngüsü boşaldığında istemci kalan olayları en fazla 2 saniye boyunca gönderir.process.exit() ve sinyaller bu adımı atlar. Çıkmadan önce
await client.shutdown() çağırın. Express örneğindeki SIGTERM handler’ı bunu
yapar.
Sorunları giderin
Log alanlarını seçmek için Yapılandırılmış
loglama sayfasına bakın. Diğer framework’ler
için SDK entegrasyonu rehberine bakın.
