$lang['tuto'] = "ट्यूटोरियल"; ?> लॉग वर्कस्पेसमध्ये Azure

लॉग वर्कस्पेसमध्ये Azure फंक्शन माहिती लॉग का गहाळ आहेत?

लॉग वर्कस्पेसमध्ये Azure फंक्शन माहिती लॉग का गहाळ आहेत?
References for Azure Function Logging Solutions

ऍप्लिकेशन इनसाइट्समध्ये गहाळ Azure फंक्शन लॉगमधील समस्यानिवारण

Azure Functions सह काम करताना अनेकदा चांगले तेल असलेले ऑटोमेशन इंजिन बनवल्यासारखे वाटते. पण तुमच्या ॲप्लिकेशन इनसाइट्स वर्कस्पेसमधून काही महत्त्वाचे लॉग गायब होतात तेव्हा काय होते? 🤔 हे एक आव्हान आहे ज्याचा मी अलीकडेच Timer Trigger Azure फंक्शन विकसित करताना सामना केला. माझे माहिती-स्तरीय लॉग, जे Azure पोर्टल लॉग कन्सोलमध्ये उत्तम प्रकारे कार्य करतात, लॉग वर्कस्पेस मध्ये अनाकलनीयपणे अनुपस्थित होते.

सुरुवातीला, मी गृहित धरले की सर्वकाही योग्यरित्या कॉन्फिगर केले आहे. शेवटी, माझ्या फंक्शन ॲपच्या निर्मितीदरम्यान मी ऍप्लिकेशन इनसाइट्स सेट केले होते आणि टेलीमेट्री सेटअप बॉक्सच्या बाहेर काम करत असल्याचे दिसते. डेव्हलपर म्हणून, माहितीचे लॉग कोठेही सापडत नसताना चेतावणी आणि त्रुटी लॉग योग्यरित्या दिसणे यापेक्षा अधिक गोंधळात टाकणारे काहीही नाही. ते कुठे लपले होते?

वेब अनुप्रयोग डीबग करताना या समस्येने मला अशाच क्षणाची आठवण करून दिली. त्रुटी नोंदी “मला दुरुस्त करा!” म्हणून ओरडल्या. तर सूक्ष्म माहिती-स्तर नोंदी रडारच्या खाली घसरल्या. गहाळ कोडे शोधण्यासारखे हे थोडेसे आहे—ते अस्तित्त्वात आहे हे जाणून घेणे परंतु ढिगाऱ्यात ते पूर्णपणे दिसत नाही. 🧩 Azure चे host.json आणि टेलीमेट्री सेटिंग्ज येथे अनेकदा भूमिका बजावतात.

या लेखात, मी या समस्येचे मूळ कारण आणि ते चरण-दर-चरण कसे सोडवायचे ते सांगेन. host.json कॉन्फिगरेशन पासून लॉग लेव्हल थ्रेशोल्डची पडताळणी करण्यापर्यंत, मी तुम्हाला उपायांबद्दल मार्गदर्शन करेन. माहिती नोंदी गहाळ झालेल्यांना तुमच्या लॉग वर्कस्पेस मध्ये परत येण्याची खात्री करूया.

आज्ञा वापराचे उदाहरण
ConfigureFunctionsWorkerDefaults() Azure फंक्शन्स वर्कर पाइपलाइन सुरू आणि कॉन्फिगर करते. हे सुनिश्चित करते की मिडलवेअर आणि सेवा Azure फंक्शन्सच्या अंमलबजावणीसाठी योग्यरित्या सेट केल्या आहेत.
Configure<LoggerFilterOptions>() माहिती, चेतावणी किंवा त्रुटी यासारख्या त्यांच्या लॉग स्तरावर आधारित लॉग फिल्टर करण्यासाठी वापरला जातो. हे सुनिश्चित करते की फक्त इच्छित लॉग स्तरांवर प्रक्रिया केली जाते.
services.AddApplicationInsightsTelemetryWorkerService() कामगार सेवांसाठी अर्ज अंतर्दृष्टीची नोंदणी करते. हे नॉन-HTTP-ट्रिगर केलेल्या संदर्भांमध्ये Azure फंक्शन्ससाठी विशेषतः टेलिमेट्री संकलन आणि लॉगिंग सक्षम करते.
options.MinLevel = LogLevel.Information किमान लॉग स्तर थ्रेशोल्ड सेट करते. उदाहरणार्थ, 'माहिती' हे सुनिश्चित करते की माहिती, चेतावणी आणि त्रुटी पातळीचे लॉग कॅप्चर केले जातात.
ConfigureServices() सानुकूल सेवा जोडण्यासाठी किंवा लॉगिंग, ऍप्लिकेशन इनसाइट्स किंवा कोणतेही DI कंटेनर-संबंधित घटक यासारख्या अवलंबित्व कॉन्फिगर करण्यासाठी एक पद्धत प्रदान करते.
samplingSettings: { isEnabled: false } माहिती-स्तर लॉगसह सर्व लॉग फिल्टर न करता कॅप्चर केले जातील याची खात्री करण्यासाठी टेलिमेट्री सॅम्पलिंग अक्षम करते.
host.Run() Azure फंक्शन्स वर्कर प्रक्रिया चालविण्यासाठी कॉन्फिगर केलेले होस्ट कार्यान्वित करते आणि येणाऱ्या इव्हेंट्स किंवा ट्रिगरसाठी ऐकणे सुरू करते.
builder.SetMinimumLevel(LogLevel.Information) लॉगर कॉन्फिगरेशनसाठी स्पष्टपणे किमान लॉग स्तर सेट करते जेणेकरून माहिती स्तरावर आणि त्यावरील तपशीलवार लॉगवर प्रक्रिया केली जाईल.
Assert.True(condition, message) अट सत्य असल्याचे सत्यापित करण्यासाठी युनिट चाचणीमध्ये वापरले जाते. या प्रकरणात, हे सत्यापित करते की माहिती लॉग यशस्वीरित्या कॅप्चर केले जातात.
LogInformation("Message") माहितीपर संदेश लॉग करतो. Azure फंक्शन्समधील गैर-महत्वपूर्ण क्रियाकलाप डीबगिंग आणि निरीक्षण करण्यासाठी हे महत्त्वपूर्ण आहे.

गहाळ Azure फंक्शन लॉग समजून घेणे आणि ते कसे सोडवायचे

पूर्वी प्रदान केलेल्या स्क्रिप्ट्सचा उद्देश सामान्य समस्येचे निराकरण करणे आहे Azure फंक्शनद्वारे व्युत्पन्न केलेले लॉग वर्कस्पेसमध्ये दिसत नाहीत, जरी ते Azure पोर्टल लॉग कन्सोलमध्ये दिसत असले तरीही. host.json फाइलमधील अयोग्य कॉन्फिगरेशन, अपुरी टेलीमेट्री सेटिंग्ज किंवा ॲप्लिकेशन इनसाइट्स इंटिग्रेशनमधील समस्यांमुळे ही विसंगती अनेकदा उद्भवते. सारख्या आज्ञा वापरून आणि , आम्ही खात्री करतो की ऍप्लिकेशन इनसाइट्स अपेक्षेप्रमाणे लॉग कॅप्चर करते. या स्क्रिप्ट टेलीमेट्री डेटा संकलित आणि व्यवस्थापित करण्यासाठी एक मजबूत पाया स्थापित करतात.

प्रथम, Program.cs मधील `HostBuilder` Azure फंक्शन वर्कर वातावरण सेट करते. पद्धत Azure फंक्शन्ससाठी सर्व आवश्यक मिडलवेअर सुरू केल्याची खात्री करते. हे सानुकूल लॉगिंग आणि अवलंबित्व इंजेक्शन कॉन्फिगरेशनला देखील अनुमती देते. पुढे, आम्ही AddApplicationInsightsTelemetryWorkerService() वापरून ऍप्लिकेशन इनसाइट्सची स्पष्टपणे नोंदणी करतो. ही पायरी हे सुनिश्चित करते की नॉन-HTTP-ट्रिगर केलेल्या Azure फंक्शन्ससाठी टेलीमेट्री संकलन योग्यरित्या कॉन्फिगर केले आहे. उदाहरणार्थ, टाइमर ट्रिगर फंक्शन डीबग करण्याची कल्पना करा: ॲप्लिकेशन इनसाइट्सशिवाय, कार्यप्रदर्शन ट्रॅक करणे आणि समस्या ओळखणे ही एक मॅन्युअल आणि वेळ घेणारी प्रक्रिया बनते. 🔧

host.json फाइल कोणते लॉग स्तर कॅप्चर केले जातील हे नियंत्रित करण्यात महत्त्वाची भूमिका बजावते. डीफॉल्ट आणि ऍप्लिकेशन इनसाइट दोन्ही विभागांमध्ये `लॉगलेव्हल` माहिती वर सेट करून, आम्ही स्पष्टपणे परिभाषित करतो की माहिती-स्तर लॉगवर प्रक्रिया करणे आवश्यक आहे. तथापि, samplingSettings गुणधर्म काहीवेळा लॉग फिल्टर करू शकतात, ज्यामुळे लॉग वर्कस्पेसमधील नोंदी गहाळ होतात. सॅम्पलिंग अक्षम करून (`"isEnabled": false`), आम्ही खात्री करतो की माहिती लॉगसह सर्व टेलीमेट्री डेटा कॅप्चर केला आहे. उत्पादन समस्यांचे निवारण करताना हे विशेषतः महत्वाचे आहे जेथे किरकोळ तपशील देखील मूळ कारण प्रकट करू शकतात. मला एकदा अशा परिस्थितीचा सामना करावा लागला जिथे एका लहान लॉगइनफॉर्मेशन संदेशाने चुकीचे कॉन्फिगर केलेले शेड्यूलर उघड करण्यात मदत केली. 🎯

शेवटी, युनिट चाचणी स्क्रिप्ट सत्यापित करते की वेगवेगळ्या स्तरांवर लॉग-माहिती, चेतावणी आणि त्रुटी—योग्यरित्या उत्सर्जित आणि कॅप्चर केले जातात. वापरत आहे , आम्ही खात्री करतो की लॉगर इच्छित थ्रेशोल्डवर किंवा त्याहून अधिक लॉगवर प्रक्रिया करतो. आमच्या उदाहरणामध्ये, आम्ही सत्यापित केले की माहिती लॉग स्पष्टपणे कॉन्फिगर केल्यावर दिसतात. या सारख्या युनिट चाचण्या लिहिल्याने लॉगिंग वर्तन वातावरणात सुसंगत असल्याची खात्री होते, तैनातीदरम्यान आश्चर्यचकित होण्यापासून प्रतिबंधित करते. एकत्रितपणे, या स्क्रिप्ट्स गहाळ Azure फंक्शन लॉगच्या समस्यानिवारणासाठी आणि तुमच्या क्लाउड ऍप्लिकेशन्समधील टेलीमेट्री संग्रह ऑप्टिमाइझ करण्यासाठी सर्वसमावेशक उपाय प्रदान करतात.

लॉग वर्कस्पेसमध्ये Azure फंक्शन लॉग दिसण्याची खात्री करणे

ॲप्लिकेशन इनसाइट्सचे योग्य कॉन्फिगरेशन सुनिश्चित करून, गहाळ माहिती लॉग समस्येचे निराकरण करण्यासाठी येथे एक C# बॅक-एंड उपाय आहे.

// Solution 1: Proper Host Configuration and Log Filtering
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
public class Program
{
    public static void Main(string[] args)
    {
        var host = new HostBuilder()
            .ConfigureFunctionsWorkerDefaults()
            .ConfigureServices(services =>
            {
                services.AddApplicationInsightsTelemetryWorkerService();
                services.Configure<LoggerFilterOptions>(options =>
                {
                    options.MinLevel = LogLevel.Information;
                });
            })
            .Build();
        host.Run();
    }
}

योग्य लॉग लेव्हल नोंदणी सुनिश्चित करण्यासाठी कॉन्फिगरेशनचे पुनरावलोकन करणे

host.json आणि ऍप्लिकेशन इनसाइट्स लॉग स्तर संरेखित आहेत याची खात्री करण्यासाठी कॉन्फिगरेशन फाइल सेटअप.

पर्यायी: Azure फंक्शन कोडमध्ये विशिष्ट लॉग स्तर फिल्टर करणे

वेगवेगळ्या स्तरांसाठी लॉग स्पष्टपणे फिल्टर आणि उत्सर्जित करण्यासाठी C# स्क्रिप्ट.

using Microsoft.Extensions.Logging;
public class MyFunction
{
    private readonly ILogger _logger;
    public MyFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<MyFunction>();
    }
    public void Run()
    {
        _logger.LogInformation("Executing Information level log.");
        _logger.LogWarning("This is a Warning level log.");
        _logger.LogError("This is an Error level log.");
    }
}

लॉग लेव्हल कॉन्फिगरेशनसाठी युनिट चाचणी

माहिती स्तरावरील लॉग योग्यरित्या कॅप्चर केले आहेत हे सत्यापित करण्यासाठी एक साधी युनिट चाचणी.

using Xunit;
using Microsoft.Extensions.Logging;
public class LogTests
{
    [Fact]
    public void VerifyInformationLogsAreCaptured()
    {
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddConsole();
            builder.SetMinimumLevel(LogLevel.Information);
        });
        var logger = loggerFactory.CreateLogger("TestLogger");
        logger.LogInformation("This is a test Information log.");
        Assert.True(true, "Information log captured successfully.");
    }
}

टेलीमेट्री डेटा एक्सप्लोर करून गहाळ Azure फंक्शन लॉगचे निराकरण करणे

लॉग वर्कस्पेस मध्ये दिसत नसलेल्या Azure फंक्शन लॉगचा आणखी एक गंभीर पैलू म्हणजे ॲप्लिकेशन इनसाइट्सद्वारे वापरलेले टेलिमेट्री चॅनेल कॉन्फिगरेशन समाविष्ट आहे. डीफॉल्टनुसार, Azure फंक्शन्स ऍप्लिकेशन इनसाइट्स SDK वापरतात, जे टेलीमेट्री एंडपॉइंटवर पाठवण्यापूर्वी लॉग बफर करतात. हे बफरिंग, तथापि, टेलीमेट्री डेटाचे सॅम्पलिंग किंवा अयोग्य फ्लशिंगमुळे माहिती-स्तरीय लॉग सारख्या विशिष्ट लॉग नोंदींना विलंब किंवा वगळू शकते. सुसंगत लॉग राखण्यासाठी योग्य टेलीमेट्री चॅनेल वर्तन सुनिश्चित करणे महत्वाचे आहे.

एक अनेकदा दुर्लक्षित घटक आहे host.json मध्ये कॉन्फिगरेशन. जेव्हा सॅम्पलिंग सक्षम केले जाते, तेव्हा डेटा व्हॉल्यूम आणि खर्च कमी करण्यासाठी लॉगचा फक्त एक अंश ऍप्लिकेशन इनसाइट्सकडे पाठविला जातो. तथापि, डीबगिंगसाठी माहिती लॉग महत्त्वपूर्ण असल्यास, तुम्ही एकतर सॅम्पलिंग पूर्णपणे अक्षम केले पाहिजे (`"isEnabled": false`) किंवा सर्व आवश्यक लॉग कॅप्चर केले आहेत याची खात्री करण्यासाठी सॅम्पलिंग लॉजिक समायोजित केले पाहिजे. उदाहरणार्थ, मला अशा समस्येचा सामना करावा लागला जेथे सॅम्पलिंग सक्षम केल्याने गैर-महत्वपूर्ण माहिती लॉगमध्ये यादृच्छिक थेंब होते, ज्यामुळे उत्पादन डीबगिंग दरम्यान निराशा होते. 💻

याव्यतिरिक्त, वापरून सर्व बफर टेलीमेट्री ताबडतोब पाठवल्या गेल्याची, डेटाची हानी टाळून कमांड सुनिश्चित करते. एचटीटीपी विनंत्या किंवा टाइमर ट्रिगर्स सारख्या हाय-लोड ट्रिगर्स अंतर्गत Azure फंक्शन्स चालतात अशा परिस्थितीत, टेलीमेट्री बफरिंग त्वरीत जमा होऊ शकते, ज्यामुळे विलंब होतो. TelemetryClient.Flush() वर स्पष्टपणे कॉल करून किंवा टेलीमेट्री एंडपॉइंट कनेक्टिव्हिटी सत्यापित करून, विकासक लॉग विसंगती कमी करू शकतात आणि अचूक निरीक्षण वातावरण राखू शकतात. शेवटी, सॅम्पलिंग, बफरिंग आणि फ्लशिंग संतुलित करणे खर्च कमी करताना इष्टतम लॉग दृश्यमानतेसाठी अनुमती देते.

  1. लॉग वर्कस्पेसमधून माझे माहितीचे लॉग का गहाळ आहेत?
  2. मुळे माहिती लॉग दिसू शकत नाहीत मध्ये . सह सॅम्पलिंग अक्षम करा सर्व नोंदी कॅप्चर करण्यासाठी.
  3. host.json मधील LogLevel कॉन्फिगरेशन काय करते?
  4. द कॅप्चर केलेली किमान लॉग तीव्रता निर्दिष्ट करते, जसे की , त्या स्तरावरील किंवा त्यावरील नोंदींवर प्रक्रिया केल्याची खात्री करून.
  5. टेलीमेट्री डेटा ऍप्लिकेशन इनसाइट्समध्ये फ्लश झाला आहे याची मी खात्री कशी करू शकतो?
  6. वापरा सर्व बफर केलेल्या टेलीमेट्रीला त्वरित पाठवण्याची सक्ती करण्यासाठी तुमच्या फंक्शन कोडमधील पद्धत.
  7. चेतावणी आणि त्रुटी नोंदी का दिसत आहेत परंतु माहिती नोंदी का नाहीत?
  8. ही समस्या उद्भवते जेव्हा चुकीचे कॉन्फिगर केलेले आहे किंवा ऑप्टिमायझेशनमुळे माहिती लॉग ड्रॉप करा.
  9. विशिष्ट लॉग समाविष्ट करण्यासाठी मी सॅम्पलिंग लॉजिक समायोजित करू शकतो का?
  10. होय, तुम्ही सानुकूलित करू शकता अंतर्गत मालमत्ता जसे विशिष्ट टेलीमेट्री प्रकार वगळण्यासाठी किंवा Exception.
  11. AddApplicationInsightsTelemetryWorkerService() ची भूमिका काय आहे?
  12. द पद्धत Azure फंक्शन्समध्ये टेलिमेट्रीसाठी ऍप्लिकेशन इनसाइट्सची नोंदणी करते.
  13. ऍप्लिकेशन इनसाइट्स योग्यरित्या जोडलेले आहेत हे मी कसे सत्यापित करू?
  14. तुमच्या फंक्शन ॲपच्या कॉन्फिगरेशनमध्ये ॲप्लिकेशन इनसाइट्स सेटिंग्ज अंतर्गत इन्स्ट्रुमेंटेशन की किंवा कनेक्शन स्ट्रिंग तपासा.
  15. मी माहिती-स्तरीय संदेश प्रोग्रामॅटिकरित्या लॉग करू शकतो?
  16. होय, आपण वापरू शकता तुमच्या फंक्शन कोडमध्ये माहिती संदेश स्पष्टपणे लॉग करण्याची पद्धत.
  17. मी टायमर ट्रिगर फंक्शनमध्ये गहाळ लॉगचे ट्रबलशूट कसे करू शकतो?
  18. सत्यापित करा कॉन्फिगरेशन, टेलीमेट्री कनेक्ट असल्याची खात्री करा आणि कॉल करा फंक्शनच्या शेवटी.
  19. ConfigureFunctionsWorkerDefaults() काय करते?
  20. द पद्धत Azure फंक्शन्स मिडलवेअर सुरू करते आणि लॉगिंग सेट करते.

Azure फंक्शन लॉगमध्ये लॉग दृश्यमानता सुनिश्चित करणे

Azure फंक्शन्समध्ये योग्य लॉग दृश्यमानता सुनिश्चित करण्यासाठी host.json चे काळजीपूर्वक कॉन्फिगरेशन आणि योग्य टेलीमेट्री सेटिंग्ज आवश्यक आहेत. सारखे मुद्दे आणि डीफॉल्ट लॉग लेव्हल थ्रेशोल्डमुळे लॉग गहाळ होऊ शकतात, जरी पोर्टल कन्सोलमध्ये डेटा दिसतो. स्पष्टपणे सॅम्पलिंग अक्षम करणे आणि टेलिमेट्री फ्लश पद्धतींना कॉल करणे ही समस्या सोडवते.

याव्यतिरिक्त, ऍप्लिकेशन इनसाइट्स योग्यरित्या कनेक्ट केलेले असल्याचे सत्यापित करणे आणि दोन्हीमध्ये योग्य लॉग स्तर सुनिश्चित करणे आणि कॉन्फिगरेशन फाइल्स महत्त्वपूर्ण आहेत. या ऍडजस्टमेंटसह, माहिती लॉग विश्वासार्हपणे लॉग वर्कस्पेसमध्ये दिसतील, Azure फंक्शन वर्तनामध्ये स्पष्ट अंतर्दृष्टी प्रदान करेल. 🛠️

  1. ऍप्लिकेशन इनसाइट्स कॉन्फिगरेशनवर अधिकृत मायक्रोसॉफ्ट डॉक्युमेंटेशन - मायक्रोसॉफ्ट शिका
  2. Azure फंक्शन लॉगिंगसाठी सर्वोत्तम पद्धती - Azure फंक्शन्स मॉनिटरिंग