"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गोलांग और GoFr का उपयोग करके रनटाइम लॉग स्तर परिवर्तन

गोलांग और GoFr का उपयोग करके रनटाइम लॉग स्तर परिवर्तन

2024-07-30 को प्रकाशित
ब्राउज़ करें:326

इस लेख में, मैं साझा करूंगा कि आप अपने एप्लिकेशन को पुनरारंभ किए बिना अपने एप्लिकेशन के लॉग स्तर को कैसे बदल सकते हैं।

परिचय

लॉग स्तरों को आमतौर पर महत्व के क्रम में माना जाता है: विकास में "महत्वहीन" स्तरों को चालू करें (नोटिस, डीबग और इसी तरह), लेकिन केवल "सबसे महत्वपूर्ण" स्तरों (चेतावनी, त्रुटि, आदि) को सक्षम करें उत्पादन, जहां सीपीयू समय और डिस्क स्थान जैसे संसाधन कीमती हैं।

लेकिन क्या होगा यदि आपका एप्लिकेशन त्रुटि स्तर पर चल रहा है और आपको कई समस्याओं का सामना करना पड़ रहा है, लेकिन आप त्रुटि स्तर लॉग से इसका पता नहीं लगा सकते हैं, एप्लिकेशन को पुन: नियोजित करके लॉग स्तर को बदलने में बहुत समय और संसाधन लगेंगे।

इसके अलावा, उत्पादन में आपके एप्लिकेशन को 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()
}

लॉग सेवा चलाने के बाद हम निम्नलिखित लॉग देखेंगे:

LOGS FOR LOG-LEVEL CHANGE SERVICE STARTUP

हमारे पास सभी 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 (नीचे) पर प्रस्तुत फॉर्म भरकर मुफ्त स्वैग (टी-शर्ट, स्टिकर) प्राप्त कर सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/aryanmehrotra/remote-runtime-log-level-change-using-golang-gofr-54d8?1 यदि कोई उल्लंघन है, तो हटाने के लिए कृपया [email protected] पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3