Logging می تواند ابزاری ارزشمند برای عیب یابی مشکلات و تجزیه و تحلیل استفاده از برنامه باشد. این بسته ها کمک می کنند تا آن را به یک فرآیند ساده تبدیل کنید.
ورود به سیستم مناسب یک جنبه حیاتی در ساخت و نگهداری برنامه های کاربردی وب است. این می تواند به شما در ردیابی خطاها، تشخیص مشکلات عملکرد و درک نحوه تعامل کاربران با برنامه شما کمک کند.
Node.js دارای بستههای گزارشگیری بسیاری است که به شما در ایجاد و مدیریت گزارشهای ساختاریافته کمک میکند. در اینجا بهترین بسته های گزارش گیری موجود در اکوسیستم Node.js و نحوه استفاده از آنها را بررسی خواهید کرد.
1. وینستون
Winston یک کتابخانه Node.js است که قابلیت ورود به سیستم انعطاف پذیر، از جمله حمل و نقل های متعدد را ارائه می دهد. “حمل و نقل” یک وسیله ذخیره سازی برای سیاهههای مربوط به شما است.
وینستون از انتقال کنسول، فایل و شبکه پشتیبانی می کند. این بدان معنی است که می توانید گزارش های خود را در کنسول چاپ کنید، آنها را در یک فایل بنویسید، یا آنها را از طریق یک شبکه ارسال کنید. با استفاده از سطوح ورود به سیستم وینستون، می توانید حمل و نقل های سفارشی ایجاد کنید و سیاهه های مربوط را بر اساس شدت فیلتر کنید.
شما می توانید Winston را به عنوان یک وابستگی در فهرست پروژه خود با استفاده از npm، مدیر بسته جاوا اسکریپت، نصب کنید. این دستور را اجرا کنید:
npm install winston
بلوک کد زیر نحوه راه اندازی یک سیستم ورود به سیستم اولیه را با استفاده از Winston نشان می دهد. شما می توانید گزارش ها را برای مکان های مختلف و سطوح مختلف شدت تعریف کنید.
const winston = require("winston");
// Winston logger
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'my-service' },
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('Hello, Winston!');
logger.warn('Warning: Something may be wrong.');
logger.error('An error occurred.');
این کد یک لاگر را با سه انتقال پیکربندی می کند. اولین مورد یک انتقال کنسول است که پیام های گزارش را به کنسول ارسال می کند. دومی یک انتقال فایل است که گزارش هایی را با سطح “خطا” در فایل “error.log” می نویسد. سومین انتقال فایل است که همه گزارشها را در یک فایل “combined.log” مینویسد.
لاگر به طور پیشفرض در سطح «اطلاعات» تنظیم شده است و شامل یک آبجکت ابرداده پیشفرض با فیلد «سرویس» است که روی «سرویس من» تنظیم شده است.
سپس کد سه پیام را با استفاده از لاگر به ترتیب در سطوح “info”، “warn” و “error” ثبت می کند. این پیام ها با توجه به پیکربندی انتقال ها به کنسول و فایل های گزارش مناسب خروجی می شوند.
2. مورگان
مورگان یک میان افزار لاگ برای Node.js است که قابلیت های اولیه ثبت درخواست را ارائه می دهد. به گونه ای طراحی شده است که سبک وزن و استفاده آسان باشد. مورگان با رهگیری درخواست های HTTP و ثبت اطلاعات مرتبط مانند روش درخواست، URL، کد وضعیت و غیره کار می کند.
یکی از مزایای کلیدی مورگان سادگی آن است. میتوانید آن را با چند خط کد به یک برنامه Node.js اضافه کنید، زیرا برای راهاندازی آن نیازی به پیکربندی اضافی نیست.
مورگان از فرمتهای گزارشگیری متعدد، از جمله فرمتهای رایج، ترکیبی، کوتاه، کوچک و توسعهدهنده پشتیبانی میکند و به شما امکان میدهد یکی را انتخاب کنید که به بهترین وجه با نیازهای شما مطابقت دارد.
با اجرای این دستور می توانید مورگان را به عنوان یک وابستگی در فهرست پروژه خود نصب کنید:
npm install morgan
این کد نحوه استفاده از مورگان را در یک برنامه Express نشان می دهد:
const express = require("express");
const morgan = require("morgan");
const app = express();
app.use(morgan("dev"));
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.listen(3000, () => console.log(`App Started`));
کد با استفاده از فرمت dev، مورگان را مقداردهی اولیه می کند. وقتی یک درخواست GET به مسیر اصلی (/) میکنید، مورگان جزئیات آن درخواست را در کنسول ثبت میکند.
با وجود سادگی، مورگان یک بسته لاگ قدرتمند است که قابلیتهای ثبت درخواست ضروری را برای برنامههای Node.js فراهم میکند.
3. پینو
Pino یک بسته لاگ محبوب و سبک وزن برای برنامههای Node.js است که همانطور که در بنچمارکهای آن بیان شده است، دارای عملکرد سریع و سربار کم است.
Pino از چندین نوع حمل و نقل پشتیبانی می کند که به راحتی با حمل و نقل سفارشی گسترش می یابد. یکی از ویژگی های کلیدی Pino توانایی آن در ثبت پیام های با فرمت JSON است که تجزیه و تحلیل آنها را آسان می کند.
استفاده از Pino بسته به چارچوب Node.js متفاوت است. با اجرای دستور زیر می توانید Pino را به عنوان یک وابستگی در فهرست پروژه Express خود نصب کنید:
npm install pino-http
برای چارچوب های مختلف، مستندات Pino را بررسی کنید.
این بلوک کد استفاده Pino را در یک برنامه Express نشان می دهد:
const express = require("express");
const app = express();
const pino = require('pino-http')()
app.use(pino)
app.get("/", (req, res) => {
pino(req, res) // logs request and response
req.log.info('root route') // logs additional info
res.send("Hello World!");
});
app.listen(3000, () => console.log(`App Started`));
این کد پینو را مقداردهی اولیه می کند و آن را به عنوان میان افزار ثبت می کند. هنگامی که یک درخواست GET به مسیر اصلی (/) میکنید، Pino جزئیات درخواست شما و پاسخ آن را به کنسول ثبت میکند.
4. اشکال زدایی
Debug یک بسته ورود به سیستم برای Node.js است که از تکنیک اشکال زدایی هسته Node.js مدل شده است. این یک راه حل سبک وزن برای ورود به سیستم ارائه می دهد که به شما امکان می دهد بدون تغییر کد، ورود به سیستم را به طور انتخابی فعال یا غیرفعال کنید و اشکال زدایی و عیب یابی مشکلات را آسان می کند.
اشکال زدایی همچنین به شما امکان می دهد فضاهای نام گزارش را تنظیم کنید، که ساختار سلسله مراتبی را بر اساس مؤلفه ها و ماژول های موجود در برنامه شما به لاگ های شما ارائه می دهد و فیلتر کردن و جستجوی آنها را آسان تر می کند. علاوه بر این، Debug سطوح مختلف گزارشی مانند خطا، هشدار و اطلاعات را ارائه می دهد که می توانید از آنها برای اولویت بندی و فیلتر کردن گزارش های آنها استفاده کنید.
با این دستور می توانید Debug را به عنوان یک وابستگی در فهرست پروژه خود نصب کنید:
npm install debug
این کد استفاده Debug را در یک برنامه Express نشان می دهد:
const express = require('express');
// Import debug and create namespace
const debug = require('debug')('myapp:server');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
debug('Received request for /');
res.send('Hello, world!');
});
app.listen(port, () => {
debug(`Server listening on port ${port}`);
});
کد یک فضای نام، myapp:server ایجاد می کند. این فضای نام، گزارش های مربوط به ماژول “سرور” شما را از موارد مرتبط با ماژول های دیگر با فضای نام متفاوت در برنامه شما متمایز می کند.
برای راه اندازی دیباگ این دستور را اجرا کنید:
DEBUG=myapp:* node server.js
این دستور بالا هر پیام گزارش را با فضای نامی که با myapp: شروع می شود مطابقت می دهد. اگر فقط میخواهید گزارشهای مربوط به ماژول سرور خود را ببینید، میتوانید متغیر محیطی DEBUG را روی myapp:server تنظیم کنید.
یکی دیگر از مزیت های Debug سازگاری آن با سایر بسته های لاگ مانند Winston است.
انتخاب یک بسته ورود به سیستم
انتخاب بسته لاگ یک تصمیم مهم است که می تواند به طور قابل توجهی بر کارایی و اثربخشی فرآیند اشکال زدایی شما تأثیر بگذارد. در نظر گرفتن عواملی مانند ویژگی ها و قابلیت های بسته، سازگاری آن با زبان برنامه نویسی و محیط توسعه و سهولت استفاده و پیکربندی آن ضروری است.
در نهایت، انتخاب بسته ورود به سیستم به نیازها و الزامات خاص پروژه شما بستگی دارد.