logologo
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
logologo

क्विक स्टार्ट

Plugin डेवलपमेंट अवलोकन
अपना पहला Plugin लिखें
प्रोजेक्ट डायरेक्टरी स्ट्रक्चर

सर्वर-साइड डेवलपमेंट

अवलोकन
Plugin
कलेक्शन डेटा टेबल
डेटाबेस ऑपरेशन
DataSourceManager डेटा सोर्स प्रबंधन
ResourceManager रिसोर्स प्रबंधन
ACL परमिशन कंट्रोल
Middleware
Cache
Event
Context रिक्वेस्ट कॉन्टेक्स्ट
माइग्रेशन अपग्रेड स्क्रिप्ट
Logger
Telemetry
I18n इंटरनेशनलाइजेशन
Command लाइन
CronJobManager शेड्यूल्ड टास्क प्रबंधन
Test

क्लाइंट-साइड डेवलपमेंट

अवलोकन
Plugin
Context
Router
ACL परमिशन कंट्रोल
DataSourceManager डेटा सोर्स प्रबंधन
Resource
Request
Styles & Themes
Logger
I18n इंटरनेशनलाइजेशन
Test

अन्य

Plugin अपग्रेड गाइड
भाषा सूची
डिपेंडेंसी प्रबंधन
बिल्ड
Previous PageStyles & Themes
Next PageI18n इंटरनेशनलाइजेशन
TIP

यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें

#लॉगर

NocoBase pino पर आधारित एक उच्च-प्रदर्शन लॉगिंग सिस्टम प्रदान करता है। जहाँ भी आपके पास context तक पहुँच हो, आप ctx.logger के माध्यम से एक लॉगर इंस्टेंस प्राप्त कर सकते हैं, जिसका उपयोग प्लगइन या सिस्टम के चलने के दौरान महत्वपूर्ण लॉग रिकॉर्ड करने के लिए किया जाता है।

#मूल उपयोग

// घातक त्रुटियों को लॉग करें (उदाहरण के लिए: आरंभीकरण विफल)
ctx.logger.fatal('एप्लिकेशन आरंभीकरण विफल', { error });

// सामान्य त्रुटियों को लॉग करें (उदाहरण के लिए: API अनुरोध में त्रुटि)
ctx.logger.error('डेटा लोड करने में विफल', { status, message });

// चेतावनियों को लॉग करें (उदाहरण के लिए: प्रदर्शन जोखिम या उपयोगकर्ता ऑपरेशन में अपवाद)
ctx.logger.warn('वर्तमान फ़ॉर्म में सहेजे न गए बदलाव शामिल हैं');

// सामान्य रनटाइम जानकारी को लॉग करें (उदाहरण के लिए: घटक लोड हो गया)
ctx.logger.info('उपयोगकर्ता प्रोफ़ाइल घटक लोड हो गया');

// डीबग जानकारी को लॉग करें (उदाहरण के लिए: स्थिति में बदलाव)
ctx.logger.debug('वर्तमान उपयोगकर्ता स्थिति', { user });

// विस्तृत ट्रेस जानकारी को लॉग करें (उदाहरण के लिए: रेंडरिंग प्रक्रिया)
ctx.logger.trace('घटक रेंडर हो गया', { component: 'UserProfile' });

ये विधियाँ विभिन्न लॉग स्तरों (उच्च से निम्न तक) के अनुरूप हैं:

स्तरविधिविवरण
fatalctx.logger.fatal()घातक त्रुटियाँ, आमतौर पर प्रोग्राम बंद होने का कारण बनती हैं
errorctx.logger.error()त्रुटि लॉग, अनुरोध या ऑपरेशन की विफलता का संकेत देते हैं
warnctx.logger.warn()चेतावनी जानकारी, संभावित जोखिमों या अप्रत्याशित स्थितियों के प्रति सचेत करती है
infoctx.logger.info()सामान्य रनटाइम जानकारी
debugctx.logger.debug()डेवलपमेंट वातावरण के लिए डीबग जानकारी
tracectx.logger.trace()विस्तृत ट्रेस जानकारी, आमतौर पर गहन निदान के लिए

#लॉग प्रारूप

प्रत्येक लॉग आउटपुट संरचित JSON प्रारूप में होता है, जिसमें डिफ़ॉल्ट रूप से निम्नलिखित फ़ील्ड शामिल होते हैं:

फ़ील्डप्रकारविवरण
levelnumberलॉग स्तर
timenumberटाइमस्टैम्प (मिलीसेकंड)
pidnumberप्रोसेस ID
hostnamestringहोस्टनाम
msgstringलॉग संदेश
अन्यobjectकस्टम संदर्भ जानकारी

उदाहरण आउटपुट:

{
  "level": 30,
  "time": 1730540153064,
  "pid": 12765,
  "hostname": "nocobase.local",
  "msg": "HelloModel rendered",
  "a": "a"
}

#संदर्भ बाइंडिंग

ctx.logger स्वचालित रूप से संदर्भ जानकारी इंजेक्ट करता है, जैसे कि वर्तमान प्लगइन, मॉड्यूल, या अनुरोध का स्रोत, जिससे लॉग को उनके स्रोत तक अधिक सटीक रूप से ट्रैक किया जा सकता है।

plugin.context.logger.info('प्लगइन आरंभीकृत');
model.context.logger.error('मॉडल सत्यापन विफल', { model: 'User' });

उदाहरण आउटपुट (संदर्भ के साथ):

{
  "level": 30,
  "msg": "Plugin initialized",
  "plugin": "plugin-audit-trail"
}

#कस्टम लॉगर

आप प्लगइन में कस्टम लॉगर इंस्टेंस बना सकते हैं, जो डिफ़ॉल्ट कॉन्फ़िगरेशन को इनहेरिट या एक्सटेंड करते हैं:

const logger = ctx.logger.child({ module: 'MyPlugin' });
logger.info('सबमॉड्यूल शुरू हुआ');

चाइल्ड लॉगर मुख्य लॉगर के कॉन्फ़िगरेशन को इनहेरिट करते हैं और स्वचालित रूप से संदर्भ संलग्न करते हैं।

#लॉग स्तर पदानुक्रम

Pino के लॉग स्तर उच्च से निम्न तक संख्यात्मक परिभाषा का पालन करते हैं, जहाँ छोटी संख्याएँ कम प्राथमिकता दर्शाती हैं। नीचे लॉग स्तरों का पूरा पदानुक्रम दिया गया है:

स्तर का नाममानविधि का नामविवरण
fatal60logger.fatal()घातक त्रुटियाँ, आमतौर पर प्रोग्राम को आगे चलने में असमर्थ बनाती हैं
error50logger.error()सामान्य त्रुटियाँ, अनुरोध की विफलता या ऑपरेशन में अपवाद का संकेत देती हैं
warn40logger.warn()चेतावनी जानकारी, संभावित जोखिमों या अप्रत्याशित स्थितियों के प्रति सचेत करती है
info30logger.info()सामान्य जानकारी, सिस्टम की स्थिति या सामान्य ऑपरेशनों को रिकॉर्ड करती है
debug20logger.debug()डेवलपमेंट चरण में समस्या विश्लेषण के लिए डीबग जानकारी
trace10logger.trace()गहन निदान के लिए विस्तृत ट्रेस जानकारी
silent-Infinity(कोई संबंधित विधि नहीं)सभी लॉग आउटपुट बंद करें

Pino केवल उन लॉग को आउटपुट करता है जो वर्तमान level कॉन्फ़िगरेशन से बड़े या उसके बराबर होते हैं। उदाहरण के लिए, जब लॉग स्तर info होता है, तो debug और trace लॉग को अनदेखा कर दिया जाएगा।

#प्लगइन डेवलपमेंट में सर्वोत्तम अभ्यास

  1. संदर्भ लॉगर का उपयोग करें
    प्लगइन, मॉडल, या एप्लिकेशन संदर्भों में ctx.logger का उपयोग करें, ताकि स्रोत जानकारी स्वचालित रूप से साथ आए।

  2. लॉग स्तरों में अंतर करें

    • व्यावसायिक अपवादों को रिकॉर्ड करने के लिए error का उपयोग करें
    • स्थिति में बदलाव को रिकॉर्ड करने के लिए info का उपयोग करें
    • डेवलपमेंट डीबगिंग जानकारी को रिकॉर्ड करने के लिए debug का उपयोग करें
  3. अत्यधिक लॉगिंग से बचें
    विशेष रूप से debug और trace स्तरों पर, इन्हें केवल डेवलपमेंट वातावरण में सक्षम करने की सलाह दी जाती है।

  4. संरचित डेटा का उपयोग करें
    स्ट्रिंग को जोड़ने के बजाय ऑब्जेक्ट पैरामीटर पास करें, जो लॉग विश्लेषण और फ़िल्टरिंग में मदद करता है।

इन प्रथाओं का पालन करके, डेवलपर्स प्लगइन के निष्पादन को अधिक कुशलता से ट्रैक कर सकते हैं, समस्याओं का निवारण कर सकते हैं, और लॉगिंग सिस्टम को संरचित और एक्स्टेंसिबल बनाए रख सकते हैं।