इस लेख में, मैं साझा करूंगा कि आप अपने एप्लिकेशन को पुनरारंभ किए बिना अपने एप्लिकेशन के लॉग स्तर को कैसे बदल सकते हैं।
लॉग स्तरों को आमतौर पर महत्व के क्रम में माना जाता है: विकास में "महत्वहीन" स्तरों को चालू करें (नोटिस, डीबग और इसी तरह), लेकिन केवल "सबसे महत्वपूर्ण" स्तरों (चेतावनी, त्रुटि, आदि) को सक्षम करें उत्पादन, जहां सीपीयू समय और डिस्क स्थान जैसे संसाधन कीमती हैं।
लेकिन क्या होगा यदि आपका एप्लिकेशन त्रुटि स्तर पर चल रहा है और आपको कई समस्याओं का सामना करना पड़ रहा है, लेकिन आप त्रुटि स्तर लॉग से इसका पता नहीं लगा सकते हैं, एप्लिकेशन को पुन: नियोजित करके लॉग स्तर को बदलने में बहुत समय और संसाधन लगेंगे।
इसके अलावा, उत्पादन में आपके एप्लिकेशन को INFO या DEBUG स्तर पर चलाने से बड़ी संख्या में लॉग उत्पन्न होंगे जो लॉगिंग सिस्टम को प्रभावित कर सकते हैं, जिससे I/O संचालन और संसाधन खपत में वृद्धि हो सकती है।
हमें इन मुद्दों से बचाने के लिए, GoFr - अल्टीमेट गोलांग फ्रेमवर्क आपके एप्लिकेशन को पुनरारंभ किए बिना लॉग स्तर को बदलने का एक सुरक्षित तरीका प्रदान करता है।
लॉग स्तर को बदलने के लिए किसी भी GoFr एप्लिकेशन को निम्नलिखित कॉन्फ़िगरेशन की आवश्यकता होती है:
REMOTE_LOG_URL=(e.g., https://log-service.com/log-levels?id=1)
GoFr नवीनतम लॉग स्तर प्राप्त करने के लिए डिफ़ॉल्ट रूप से हर 15 सेकंड में प्रदान किए गए समापन बिंदु को लाता है, इस अंतराल को निम्नलिखित कॉन्फ़िगरेशन जोड़कर बढ़ाया या घटाया जा सकता है।
REMOTE_LOG_FETCH_INTERVAL=(default: 15)
GoFr को दो अनिवार्य फ़ील्ड के साथ निम्नलिखित प्रारूप में URL से प्रतिक्रिया की आवश्यकता है:
{ "data": { "serviceName": "test-service", "logLevel": "DEBUG" } }
आइए लॉग-स्तरीय सेवा बनाएं जो हमारे एप्लिकेशन को लॉग-स्तर प्रदान करेगी।
मैं सेवा बनाने के लिए GoFr का उपयोग करूंगा, अधिक जानने के लिए दस्तावेज़ देखें।
हम MySQL को डेटाबेस के रूप में उपयोग करेंगे, MySQL को जोड़ने के लिए कॉन्फ़िगरेशन निर्देशिका में .env फ़ाइल में निम्नलिखित कॉन्फ़िगरेशन जोड़ें।
DB_HOST=localhost DB_USER=root DB_PASSWORD=password DB_NAME=log-level DB_PORT=2001 DB_DIALECT=mysql
MySQL डॉकर कंटेनर को चलाने के लिए निम्नलिखित कमांड चलाएँ
docker run --name gofr-logger -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=log-level -p 2001:3306 -d mysql:8.0.30
तालिका बनाने के लिए माइग्रेशन के साथ main.go फ़ाइल जोड़ें और रूट को पंजीकृत करने के लिए हम AddRESTHandler सुविधा का उपयोग करेंगे।
main.go
package main import ( "gofr.dev/pkg/gofr" "gofr.dev/pkg/gofr/migration" ) const createTable = `CREATE TABLE level ( id INT PRIMARY KEY, service_name VARCHAR(255) NOT NULL, log_level VARCHAR(50) NOT NULL ); ` func createTableLevel() migration.Migrate { return migration.Migrate{ UP: func(d migration.Datasource) error { _, err := d.SQL.Exec(createTable) if err != nil { return err } return nil }, } } type Level struct { ID int `json:"id"` ServiceName string `json:"serviceName"` LogLevel string `json:"logLevel"` } func (u *Level) RestPath() string { return "level" } func main() { app := gofr.New() app.Migrate(map[int64]migration.Migrate{1: createTableLevel()}) err := app.AddRESTHandlers(&Level{}) if err != nil { app.Logger().Fatalf("Failed to register routes for level struct: %v", err) } app.Run() }
लॉग सेवा चलाने के बाद हम निम्नलिखित लॉग देखेंगे:
हमारे पास सभी REST मार्ग पंजीकृत हैं।
एक सेवा बनाने के लिए निम्नलिखित अनुरोध भेजें:
curl --location 'localhost:8000/level' \ --header 'Content-Type: application/json' \ --data '{ "id":1, "logLevel":"INFO", "serviceName":"gofr-app" }'
लॉग स्तर को अद्यतन करने के लिए निम्नलिखित अनुरोध भेजें:
curl --location --request PUT 'localhost:8000/level/1' \ --header 'Content-Type: application/json' \ --data '{ "id":1, "logLevel":"DEBUG", "serviceName":"gofr-app" }'
लॉग स्तर प्राप्त करने के लिए निम्नलिखित अनुरोध भेजें:
curl --location 'localhost:8000/level/1'
उसी यूआरएल का उपयोग हमारे एप्लिकेशन की कॉन्फ़िगरेशन में किया जाएगा जिसका लॉग-स्तर दूरस्थ रूप से बदला जाना है।
GoFr रिमोट लॉग लेवल परिवर्तन सुविधा का उपयोग करके, आपको निम्नलिखित लाभ मिलेंगे:
सरल समायोजन:
एप्लिकेशन को पुनरारंभ किए बिना किसी भी समय लॉग स्तर को संशोधित करें। यह समस्या निवारण के दौरान विशेष रूप से सहायक है।
बढ़ी हुई दृश्यता:
विशिष्ट मुद्दों में गहरी जानकारी प्राप्त करने के लिए आसानी से अधिक विस्तृत लॉग स्तर (जैसे, DEBUG) पर स्विच करें, और फिर नियमित संचालन के लिए कम विस्तृत स्तर (जैसे, INFO) पर वापस स्विच करें।
बेहतर प्रदर्शन:
बड़ी संख्या में लॉग उत्पन्न करने से लॉगिंग सिस्टम प्रभावित हो सकता है, जिससे I/O संचालन और संसाधन खपत में वृद्धि हो सकती है, चेतावनी या त्रुटि स्तर में परिवर्तन से लॉग की संख्या कम हो जाती है, और प्रदर्शन में वृद्धि होती है, और क्लाउड लागत कम हो जाती है।
स्टार देकर GoFr का समर्थन करें: https://github.com/gofr-dev/gofr
इसके अलावा, आपके पास अपने एप्लिकेशन के ट्रेस को निर्यात करने और देखने के लिए मुफ्त सार्वजनिक एंडपॉइंट तक पहुंच है @tracer.gofr.dev।
इसे सक्षम करने के लिए, अपनी .env फ़ाइल में निम्न कॉन्फ़िगरेशन जोड़ें
TRACE_EXPORTER=gofr
अन्य लाभ:
यदि आप जीओएफआर के विकास या लेख लिखने में योगदान करते हैं। आप उनके GitHub Readme (नीचे) पर प्रस्तुत फॉर्म भरकर मुफ्त स्वैग (टी-शर्ट, स्टिकर) प्राप्त कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3