2015-09-01 10 views
8

में इवेंट लॉगर मैं विंडोज यूनिवर्सल एप्लिकेशन के लिए इवेंट लॉग बनाने की कोशिश कर रहा हूं। इससे पहले हमारे पास घटनाओं को लॉग करने के लिए System.Diagnostics EventLog था, लेकिन मुझे विंडोज 10 यूनिवर्सल ऐप्स प्लेटफ़ॉर्म पर कुछ भी नहीं मिला। क्या विंडोज 10 के लिए लॉग बनाना संभव है और क्या इन लॉग को बाद में एक्सेस करने के लिए फ़ाइल में लिखा जा सकता है?विंडोज 10 यूनिवर्सल ऐप्स

मैंने बहुत कुछ खोजा, लेकिन कुछ भी नहीं मिला।

उत्तर

8

FileLoggingSession

Windows 8.1 चूंकि Windows.Foundation.Diagnostics नाम स्थान में FileLoggingSession और LoggingChannel कक्षाएं, जब ऐसा करने के लिए कॉन्फ़िगर किया गया है जो फ़ाइलों के लिए लॉगिंग प्रदर्शन कर सकते हैं कर रहे हैं। आप आधिकारिक documentation में और अधिक पढ़ सकते हैं।

प्रारंभ, उपयोग और लॉग फ़ाइल को पुन: प्राप्त निम्नलिखित स्निपेट में की तरह किया जा सकता है, बेशक आप इंटरफेस बनाने की जरूरत, एकमात्र आदि यह प्रयोग करने योग्य बनाने के लिए:

// Initialization 
FileLoggingSession fileLoggingSession = new FileLoggingSession("session"); 
var loggingChannel = new LoggingChannel("channel"); 
fileLoggingSession.AddLoggingChannel(loggingChannel); 

// Log messages 
loggingChannel.LogMessage("error message", LoggingLevel.Error); 

// When file is needed 
var file = await fileLoggingSession.CloseAndSaveToFileAsync(); 

// Do anything with file 

LoggingSession

बस FileLoggingSession फ़ाइल पर लॉग लिखता है लेकिन मुख्य अंतर यह है कि FileLoggingSession फ़ाइल को तुरंत लॉग लिखता है, और LoggingSession नहीं करता है, और आपकोके साथ फ़ाइल को लॉग इन करने का मैन्युअल रूप से अनुरोध करने की आवश्यकता हैविधि। प्रलेखन से:

फ़ाइल लॉजिंग सत्र वर्ग लॉग फ़ाइलों को लॉग फ़ाइलों को भेजता है जैसे वे लॉग हैं। FileLogging सत्र वर्ग अनुक्रमिक लॉगिंग का उपयोग करता है, जिसका अर्थ है कि सभी संदेश डिस्क फ़ाइल में भेजे जाते हैं, और संदेशों का अनुक्रमिक इतिहास बनाए रखा जाता है। यह LoggingSession क्लास से अलग है, जो मांग पर डिस्क पर लॉग संदेश भेजता है, और यह तब होता है जब कोई समस्या होती है और विश्लेषण के लिए इन-मेमोरी संदेशों का तत्काल इतिहास आवश्यक होता है।

MetroLog

आप किसी अन्य विकल्प आप FileLoggingSession या LoggingSession वर्गों का उपयोग करने के wan't नहीं करता है, तो है। एक अच्छा समाधान MetroLog है जिसमें FileStreamingTarget लक्ष्य है जो विंडोज/फोन ऐप में लॉग इन करना बहुत आसान बनाता है।

आप लकड़हारा बनाने जब आप इसे एक पेज में की जरूरत है, उदाहरण के लिए:

public sealed partial class LogSamplePage : Win8Sample.Common.LayoutAwarePage 
{ 
    private ILogger Log = LogManagerFactory.DefaultLogManager.GetLogger<LogSamplePage>(); 
} 

तो फिर तुम इस तरह पेज में इसका इस्तेमाल कर सकते हैं:

// flat strings... 
if (this.Log.IsInfoEnabled) 
    this.Log.Info("I've been navigated to."); 

// formatting... 
if (this.Log.IsDebugEnabled) 
    this.Log.Debug("I can also format {0}.", "strings"); 

// errors... 
try 
{ 
    this.DoMagic(); 
} 
catch(Exception ex) 
{ 
    if (this.Log.IsWarnEnabled) 
     this.Log.Warn("You can also pass in exceptions.", ex); 
} 

MetroEventSource

दूसरा समाधान this कैन बिल्गिन द्वारा एमएसडीएन नमूना गैलरी पर लॉगिंग नमूना है जहां आपके पासहैकक्षा।आप इस तरह एक त्रुटि उदाहरण के लिए संदेशों प्रवेश कर सकते हैं:

MetroEventSource.Log.Error("Here is the error message"); 

आप इस लकड़हारा का उपयोग करते हैं मत भूलना नमूना परियोजना में वर्णित है, आवेदन चलाने पर यह प्रारंभ करने में।

+1

मैं FileLogging सत्र के दस्तावेज के माध्यम से चला गया है और यह कहता है कि FileLogging सत्र तुरंत हार्डडिस्क पर लॉग ऑन करता है। हालांकि मुझे इसके लिए कोई नमूना नहीं दिख रहा है। ऐसा लगता है कि हमें एक लॉगिंग चैनल बनाना है, इसे FileLoggingSession में जोड़ें, इस लॉग चैनल का उपयोग करके लॉग इन करें। आखिरकार जब हम fileLoggingSession.closeAndSavetoFileAsync() को कॉल करते हैं, तो यह फ़ाइल को लॉग लिखता है। प्रश्न यह है कि FileLogging सत्र का उपयोग कर हार्डकिस्क पर तुरंत लॉग कैसे लिखें? क्योंकि अगर मैं अपनी ऐप को इससे पहले क्रैश करता हूं तो मैं closeAndSaveToFileAsync() को कॉल करने में सक्षम नहीं हो सकता। कृप्या सहायता करे। धन्यवाद! –

संबंधित मुद्दे