यदि आप अपने मानक आउटपुट और वास्तविक कार्यस्थल में अपनी कार्यकर्ता प्रक्रिया की त्रुटि देखना चाहते हैं तो आपको कुछ अतिरिक्त कॉन्फ़िगरेशन करने की आवश्यकता होगी। यह डेटा एक सतत भंडारण में संग्रहीत किया जाना चाहिए।
पहला चरण अपने WorkerRole
की कॉन्फ़िगरेशन विंडो में डायग्नोस्टिक्स को सक्षम करना है। यहां एक भंडारण खाता निर्दिष्ट किया जाना चाहिए।
अगला चरण WorkerRole
की OnStart()
विधि में अतिरिक्त कोड जोड़ना है। यहां आप केवल मानक आउटपुट और त्रुटि को कॉन्फ़िगर नहीं कर सकते हैं, लेकिन आप निम्न कोड उदाहरण में प्रदान की गई विंडोज इवेंट और डायग्नोस्टिक जानकारी भी सुन सकते हैं।
public override bool OnStart()
{
DiagnosticMonitorConfiguration diagConfig =
DiagnosticMonitor.GetDefaultInitialConfiguration();
// Windows event logs
diagConfig.WindowsEventLog.DataSources.Add("System!*");
diagConfig.WindowsEventLog.DataSources.Add("Application!*");
diagConfig.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Error;
diagConfig.WindowsEventLog.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
// Azure application logs
diagConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
diagConfig.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
// Performance counters
diagConfig.PerformanceCounters.DataSources.Add(
new PerformanceCounterConfiguration()
{
SampleRate = TimeSpan.FromSeconds(5),
CounterSpecifier = @"\Processor(*)\% Processor Time"
});
diagConfig.PerformanceCounters.ScheduledTransferPeriod =
TimeSpan.FromMinutes(5);
DiagnosticMonitor.Start(
"Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagConfig);
return base.OnStart();
}
इन सेटिंग्स के बाद आपका डायग्नोस्टिक डेटा कॉन्फ़िगर किए गए Azure Table संग्रहण में दिखाई देगा। आप यहां अपने डेटा को देखने के लिए आसानी से टूल लिख सकते हैं, लेकिन इसके लिए कुछ वाणिज्यिक टूल भी हैं जो इसके लिए कार्यक्षमता में बनाए गए हैं। उदाहरण के लिए Cerebrata Diagnostics Manager।
यदि किसी कारण से आप लॉग फ़ाइलों को संग्रहीत करने के लिए एज़ूर स्टोरेज का उपयोग नहीं करना चाहते हैं तो आप कस्टम ट्रेस श्रोता को कार्यान्वित कर सकते हैं जो कहीं और लॉग लिख सकता है। Here यह कैसे करना है इसके बारे में एक विवरण है। आप बस एक http पोर्ट खोल सकते हैं और उन्हें अपने सर्वर पर स्थानांतरित कर सकते हैं।
क्या आप System.Diagnostics का उपयोग कर रहे हैं। अपनी कार्यकर्ता भूमिका में संदेश लिखने के लिए? – AvkashChauhan
नहीं, मैं एक गैर-.NET 'ProgramEntryPoint' के साथ एक वर्कर भूमिका चला रहा हूं। हालांकि, मैं देख सकता हूं कि यह मेरे प्रश्न से स्पष्ट नहीं है --- मैं इसे संबोधित करने के लिए एक नया प्रश्न खोलूंगा। –
देखें [यह प्रश्न] (http://stackoverflow.com/questions/10827388/) यदि आप एक Azure वर्कर रोल में गैर-.NET ऐप चलाने के लिए 'ProgramEntryPoint' का उपयोग कर रहे हैं)। –