Nodejs Log tutma tarifi, Pino ile Express Entegrasyonu

Anil Yilmaz
3 min readNov 28, 2021

--

Selamlar herkese, bu yazımda Pino ile nasıl log alabileceğimizden bahsedeceğim.

Javascript ve loglama dediğimizde akıllara ilk gelen şey ‘console.log’ oluyor. Çok sade, çok temiz ve her işimizi gören bir yapı.

console.log(“Hello World”);

Fakat farklı bir şeyler denemenin vakti geldi. Bu sefer performans konusunda kendine güvenen ve yetenekleri sayesinde haftalık 1.900.000'den fazla indirmeye ulaşan Pino ile loglama yapalım.

Pino kendini ‘Very low overhead Node.js logger’ olarak tanımlıyor. Kendilerini bu şekilde adlandırmalarının temel sebebi Pino’nun performansa çok önem vermesi. Loglama yaparken en az seviyede kaynak tüketmeye özen gösteriyorlar. Hatta şöyle bir açıklamaları var.

Çoğu durumda Pino, alternatiflerinden 5 kat daha hızlıdır.

Bu ifade Pino’nun dökümanında yazıyor ve kulağa oldukça iddialı geliyor. Yaptıkları testlerle alternatiflerinden hızlı olduklarını kanıtlamışlar.

100000 defa log yazılması durumunda ortaya çıkan sonuçlar şöyledir;

pino.info(‘hello world’);

Test Sonuçları
Bunyan : 662.904ms
Winston : 564.752ms
Bole : 301.894ms
Debug : 361.052ms
LogLevel : 330.394ms
Pino : 246.336ms
PinoAsync : 129.507ms
PinoNodeStream : 276.479ms

pino.info(‘hello %s %j %d’, ‘world’, {obj: true}, 4, {another: ‘obj’})

Test Sonuçları
BunyanInterpolateExtra : 971.019ms
WinstonInterpolateExtra : 535.009ms
BoleInterpolateExtra : 575.668ms
PinoInterpolateExtra : 332.099ms
PinoAsyncInterpolateExtra : 209.552ms
PinoNodeStreamInterpolateExtra : 413.195ms

Sonuçları incelediğimizde Pino gerçekten hızlı. Şimdi kodlamaya geçelim ve Pino ile biraz log atalım.

Kurulum

Express dökümanından yararlanarak basit bir proje oluşturalım ve onu ayağa kaldıralım.

npm init 
npm install express --save
npm install pino pino-pretty
node index.js

Pino ile ilk logumuzu projemiz ayağa kalktığı an atalım.

Konsolumuza baktığımız zaman bir JSON ile karşılaşıyoruz. Pino loglamala yaparken JSON ile yapar. Böylece Pino’nun ürettiği çıktıyı başka serviste kullanırken JSON’a çevirmemiz gerekmez.

Logları incelediğimiz zaman ‘level, pid(ProccessId), hostname’ görüyoruz. Bunları Pino ön tanımlı olarak loga ekler. Hadi şimdi bu logları daha okunabilir hale getirelim ve Pino’nun yeteneklerini görelim.

Öncelikle ihtiyacımız olmayan pid ve hostnameden kurtulalım. Ardından loglarımızı biraz renklendirelim. Sonrasında logumuzun ne zaman atıldığını anlaşılır yapalım.

Çok daha tatlı oldu artık daha rahat okunabiliyor. Pino loglarımızı dosyaya yazma yeteneğine de sahip. Şimdi de loglarımızı dosyaya yazalım.

Özet

Pino oldukça yararlı ve kabiliyetli bir araç. Yazıda bahsedemediğim bir çok özelliği var. Mesela Pino’nun ürettiği logları pino-sentry ile Sentry’e gönderebilirsiniz ya da pino-mongodb ile Mongo veritabanına loglarınızı yazabilirsiniz. Bu gibi özellikleri eğer ilginizi çektiyse Pino’nun sitesinden daha detaylı inceleyebilirsiz.

Okuduğunuz için teşekkür ederim, hatalar ve eksiklikler için her zaman ulaşabilirsiniz. Bir sonraki yazımda görüşmek üzere 🙂

Sign up to discover human stories that deepen your understanding of the world.

--

--

Anil Yilmaz
Anil Yilmaz

No responses yet

Write a response