Log Viewer برای Next.js سمت سرور: Node.js

هنگام ساختن برنامه ها با Next.js، ورود به سیستم در سمت سرور حیاتی است. رندر سمت سرور (SSR) چالشهای منحصربهفردی و خطاهای بالقوهای را معرفی میکند که گزارشهای سمت سرویس گیرنده نمیتوانند آنها را ثبت کنند.
بیایید نحوه ادغام Errsole را در برنامه Next.js خود برای یک تجربه ورود به سیستم تمیز و روشنگر توضیح دهیم. خواهید دید که چگونه با استفاده از SQLite برای ذخیره سازی محلی شروع به ثبت سریع کنید و همچنین با گزینه های راه حل های متمرکزتر مانند MySQL یا PostgreSQL آشنا خواهید شد.
1. چرا ورود به سیستم در سمت سرور مهم است
هنگامی که Next.js صفحات را در سرور رندر می کند، داشتن دید واضحی از موارد زیر بسیار مهم است:
- سلامت برنامه: گلوگاه های عملکرد یا خطاهایی را که بر رندر سمت سرور تأثیر می گذارد، شناسایی کنید.
- اشکال زدایی: مسائلی را که هرگز در سمت مشتری ظاهر نمی شوند، مشخص کنید.
- امنیت و حسابرسی: رفتارهای مشکوک یا غیرمنتظره را در گزارش های سرور خود ردیابی کنید.
یک سیستم ثبت گزارش به خوبی سازماندهی شده این کارها را ساده می کند و Errsole روشی کاربرپسند برای ضبط و مشاهده این گزارش ها ارائه می دهد.
2. Errsole و Errsole-SQLite را نصب کنید
بیایید با نصب Errsole و افزونه ذخیره سازی SQLite آن شروع کنیم. SQLite یک پایگاه داده ساده و مبتنی بر فایل را ارائه می دهد – مناسب برای توسعه محلی یا پروژه های در مقیاس کوچک.
npm install errsole errsole-sqlite
نکته: اگر به راه حل متمرکزتری در تولید نیاز دارید، Errsole همچنین از موارد زیر پشتیبانی می کند:
- errsol-mysql برای MySQL
- errsol-postgres برای PostgreSQL
- errsol-mongodb برای MongoDB
3. یک فایل Logger ایجاد کنید (logger.js
)
برای سازماندهی کردن تنظیمات گزارش شما، یک فایل اختصاصی برای مقداردهی اولیه Errsole ایجاد می کنیم. این فایل را در a قرار دهید lib
پوشه با انجام این کار، می توانید لاگر خود را به تمام مسیرهای سمت سرور خود وارد کنید pages/api
.
// lib/logger.js
import errsole from 'errsole';
import ErrsoleSQLite from 'errsole-sqlite';
// Initialize Errsole
errsole.initialize({
storage: new ErrsoleSQLite('path/to/database.sqlite')
});
// Export errsole to use throughout your app
export default errsole;
در اینجا چیزی است که اتفاق می افتد:
-
واردات ارسل: هسته را وارد می کنیم
errsole
ماژول وerrsole-sqlite
افزونه - مقدار دهی اولیه کنید: ما Errsole را برای ذخیره گزارش ها در پایگاه داده SQLite پیکربندی می کنیم.
- صادرات: ما لاگر اولیه خود را صادر می کنیم تا بتوان از آن در پروژه شما دوباره استفاده کرد.
4. از Logger در مسیرهای API استفاده کنید
اکنون که لاگر خود را راه اندازی کرده ایم، بیایید ببینیم که چگونه رویدادها را در مسیر Next.js API ثبت کنیم. هر فایلی در pages/api
دایرکتوری در سمت سرور اجرا می شود و آن را به مکانی عالی برای گزارش های سرور تبدیل می کند.
// pages/api/hello.js
import logger from '../../lib/logger';
export default function handler(req, res) {
// Log an info message
logger.info('API /hello was called');
// Simulate an error scenario
const errorHappened = true;
if (errorHappened) {
logger.error('Something went wrong in /hello!');
}
res.status(200).json({ message: 'Hello from Next.js + Errsole!' });
}
سطوح ورود به سیستم
Errsole از سطوح مختلف گزارش پشتیبانی می کند (info
، error
، warn
و غیره)، بنابراین می توانید گزارش ها را بر اساس شدت دسته بندی کنید:
- اطلاعات: پیام های عملیاتی کلی.
- هشدار دهد: چیزی غیرمنتظره اما شکسته نیست.
- خطا: خطایی که نیاز به توجه فوری دارد.
استفاده مداوم از این سطوح، فیلتر کردن و جستجو در لاگها را بسیار سادهتر میکند.
5. مشاهده گزارش ها در داشبورد Errsole
یکی از ویژگی های برجسته Errsole آن است داشبورد وب، که گزارش های بلادرنگ و بینش خطا را در یک مکان مرکزی نمایش می دهد.
پس از تکمیل تنظیمات، می توانید از طریق روش های زیر به داشبورد وب Errsole دسترسی داشته باشید:
-
محیط زیست محلی: مرورگر وب خود را باز کنید و به http://localhost:8001/ مراجعه کنید.
-
سرور از راه دور: اگر Errsole را روی یک سرور راه دور مستقر کرده اید، از آدرس IP سرور یا نام دامنه و به دنبال آن شماره پورت (به عنوان مثال، YourServerIP:8001 یا YourDomain:8001) استفاده کنید.
پس از اتمام، خواهید دید:
- جدول زمانی و فیلترینگ: سیاهههای مربوط را بر اساس تاریخ، شدت یا محتوای پیام جستجو کنید.
- پشته های خطا: زمینه خطای مفصل، از جمله ردیابی پشته.
- به روز رسانی در زمان واقعی: سیاهههای مربوط به دیده بان به محض وقوع ظاهر می شوند.
- همکاری: از هم تیمی های خود دعوت کنید تا به آنها بپیوندند و با هم کار کنند تا به طور موثر بر گزارش ها نظارت کنند.
نکته پیشرفته: برای تنظیمات چند برنامهای، میتوانید پیشوندهای جدول یا فایلهای پایگاهداده مختلفی را برای هر پروژه اختصاص دهید تا گزارشها جدا باشند.
6. ثبت مرکزی (MySQL، PostgreSQL، و غیره)
اگر برنامه شما در مقیاس است یا به قابلیت های گزارش دهی پیشرفته نیاز دارید، یک پایگاه داده قوی تر را ادغام کنید.
مثال: استفاده از MySQL
// lib/logger.js
import errsole from 'errsole';
import ErrsoleMySQL from 'errsole-mysql';
errsole.initialize({
storage: new ErrsoleMySQL({
host: 'mysql-host',
user: 'database-user',
password: 'database-password',
database: 'database-name'
})
});
export default errsole;
به طور مشابه، شما می توانید استفاده کنید errsol-postgres، errsol-mongodb، یا سایر پایگاه های داده پشتیبانی شده برای مدیریت گزارش جامع.
7. NGINX را پیکربندی کنید
اگر برنامه شما پشت پراکسی معکوس NGINX قرار دارد، میتوانید با افزودن خطوط زیر به فایل پیکربندی NGINX، دسترسی به داشبورد وب Errsole را پیکربندی کنید:
location = /helloworld/logs {
return 301 /helloworld/logs/;
}
location /helloworld/logs/ {
proxy_pass http://localhost:8001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
پس از بهروزرسانی پیکربندی، NGINX را دوباره بارگیری کنید:
sudo nginx -s reload
اکنون می توانید از طریق دامنه خود به داشبورد دسترسی داشته باشید:
توجه: جایگزین کنید /helloworld/logs
با مسیر ورود به سیستم مورد نظر شما
8. پیکربندی پیشرفته
گزینه | تایپ کنید | توضیحات |
---|---|---|
ذخیره سازی |
ErrsoleSQLite |
مورد نیاز. پشتیبان ذخیره سازی را به همراه جزئیات اتصال مشخص کنید. |
جمع آوری گزارش ها | آرایه از رشته ها |
اختیاری. پیش فرض: ['error', 'info'] . بهطور پیشفرض، Errsole هم گزارشهای خطا و هم اطلاعات را جمعآوری میکند. برای جمعآوری فقط گزارشهای خطا، این را روی آن تنظیم کنید ['error'] . برای غیرفعال کردن کامل مجموعه گزارش، این را روی یک آرایه خالی تنظیم کنید. [] . |
EnableConsoleOutput | بولی | اختیاری. کنترل کنید خروجی گزارش در کنسول نشان داده شود یا خیر. |
exitOnException | بولی |
اختیاری. پیش فرض: true . بهطور پیشفرض، Errsole پس از گرفتن یک استثنای نامشخص از فرآیند خارج میشود. برای غیرفعال کردن این رفتار، exitOnException را روی آن تنظیم کنید false . |
فعال کردن داشبورد | بولی |
اختیاری. پیش فرض: true . ویژگی داشبورد وب را فعال یا غیرفعال کنید. |
بندر | شماره |
اختیاری. پیش فرض: 8001 . پورت شبکه را برای داشبورد وب مشخص کنید. |
مسیر | رشته |
اختیاری. پیش فرض: / . مسیر پایه برای دسترسی به داشبورد وب را تعریف کنید. |
نام برنامه | رشته | اختیاری. نام برنامه را مشخص کنید. |
محیط نام | رشته |
اختیاری. پیش فرض: process.env.NODE_ENV . محیط استقرار را مشخص کنید. |
نام سرور | رشته | اختیاری. پیش فرض: نام میزبان دستگاه. نام سرور را مشخص کنید. |
9. بهترین روش ها برای ورود به سیستم
- از پیام های توصیفی استفاده کنید: مطمئن شوید که پیامهای گزارش شما زمینه واضحی را ارائه میدهند—این به بازدید مجدد آنها در آینده کمک میکند.
- از ثبت بیش از حد خودداری کنید: فقط آنچه لازم است وارد شوید. تعداد بیش از حد لاگ می تواند اطلاعات مهم را پنهان کند و هزینه های ذخیره سازی را افزایش دهد.
- چرخش یا بایگانی: در تولید، مطمئن شوید که سیاههها را به صورت دوره ای بچرخانید تا ذخیره سازی خود را کنترل کنید.
نتیجه گیری
با ادغام ارسول در سرور Next.js خود، در زمان واقعی سلامت و عملکرد برنامه خود را مشاهده خواهید کرد. چه SQLite را برای توسعه محلی انتخاب کنید یا یک پایگاه داده پیشرفته تر مانند MySQL یا PostgreSQL را برای تولید انتخاب کنید، Errsole یک راه حل کاربر پسند برای ضبط، ذخیره و بررسی همه گزارش های سمت سرور شما در یک مکان ارائه می دهد.
خوراکی های کلیدی:
- Errsole را در یک برنامه اختصاصی مقداردهی اولیه کنید
logger.js
فایل زیرlib/
برای مرتب نگه داشتن کارها - این ثبتکننده را در مسیرهای سرور خود وارد کنید تا گزارشگیری منظم و ساختاریافته انجام شود.
- از داشبورد Errsole برای مشاهده گزارشها، فیلتر کردن آنها و عیبیابی سریع مشکلات استفاده کنید.
- با رشد برنامه خود، به گزینه های ثبت مرکزی (MySQL، PostgreSQL، و غیره) مقیاس دهید.
با این تنظیمات، میتوانید با اطمینان برنامه Next.js قوی را توسعه و نگهداری کنید، و تمام اتفاقات پشت صحنه را زیر نظر داشته باشید! از وضوح بیشتر و آرامش خاطر که با یک استراتژی ورود به سیستم مناسب می آید لذت ببرید.
یک برنامه Next.js با لاگ سمت سرور با استفاده از Errsole و MySQL. مخزن را شبیه سازی یا دانلود کنید تا آن را در عمل تجربه کنید.
کد GitHub: nextjs-server-log-viewer