Harkon Δημοσ. 20 Μαΐου 2007 Δημοσ. 20 Μαΐου 2007 γεια σας, κάνω logging τα errors απο ενα πρόγραμμά μου στον Event Viewer των Windows. Θα ήθελα όμως να μην πηγαίνουν στον έτοιμο φάκελο "Application" αλλά σε έναν δικό μου. Γνωρίζει κανείς αν/πως γίνεται αυτό; ευχαριστώ
daidalus Δημοσ. 23 Μαΐου 2007 Δημοσ. 23 Μαΐου 2007 Πρέπει να αλλάξεις την registry για να προσθέσεις ενα νέο log.Συγκεκριμένα αν πάς εδώ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog θα δεις αυτά που υπάρχουν στον συστημα σου.Προσθέτωνας ενα νέο key εκεί θα δημιουργήσει ένα νέο log.(TIP:προσθέτοντας ενα νεο key κάτω από ενα log δημιουργεί ένα νέο source, ένα από τα properties του event που κάνεις logging). Στην συνέχεια χρησιμοποίησε αυτό ως logname (και το source αν θες ως applicationname) απο το πρόγραμμα/αρχείο configuration που έχεις.Ετσι τουλάχιστον λέγονται αν χρησιμοποιείς το Exception Management Block. Την όλη διαδικασία μπορείς να την κάνεις και προγραμματιστικά αν γράψεις μια installer class και στην συνέχεια την τρέξεις με την βοήθεια του installutil.exe για να δημιουργήσει τις απαραίτητες εγγραφές στην registry. Ελπίζω να μην σε μπέρδεψα.
pkanabos Δημοσ. 29 Μαΐου 2007 Δημοσ. 29 Μαΐου 2007 Αντί να πειράζεις το registry, μπορείς να χρησιμοποιήσεις την κλάση EventLog για να δημιουργήσεις νέο Event log και να γράψεις events, αλλά υπάρχουν καλύτεροι τρόποι από αυτόν. Καταρχήν, είναι καλό να χρησιμοποιείς installers για τη δημιουργία των Event logs, γιατί έτσι γίνεται ευκολότερη η εγκατάσταση της εφαρμογής. Επίσης, μία αποτυχημένη εγκατάσταση δεν θα σου αφήσει ένα ξεκάρφωτο event log. Είναι προτιμότερο πάντως, αντί να γράφεις απευθείας στην κλάση EventLog να χρησιμοποιήσεις τους μηχανισμούς Tracing του .NET 2 ή το Enterprise Library. Το Exception Management Block είναι αρκετά παλιό και έχει αντικατασταθεί πλέον από το Enterprise Library, το οποίο είναι πλέον στην έκδοση 3. Παρότι η έκδοση του EntLib είναι η 3, αφορά το .NET 2. Εκεί το Exception Handling block έχει ξεχωρίσει από το Logging Block. Το Logging block απλοποιεί αρκετά τη διαδικασία του logging, καθώς αντί να στέλνεις ένα event απευθείας στο Event log, καλείς μόνο τη μέθοδο Logger.Write, παρέχοντας πληροφορίες όπως Event ID, Priority, Category. Στο app.config ορίζεις που θα καταγραφούν τα events (στο event log, στη βάση, σε αρχείο (απλό ή rolling), email και βάση). Μπορείς επίσης να ορίσεις τη μορφή του μηνύματος (XML ή απλό κείμενο), το format κα την πληροφορία που θα αποθηκεύεται σε κάθε διαφορετικό μέσο, π.χ. μόνο η περιγραφή του μηνύματος στο event log και ολόκληρο το call stack σε ένα flat file. Τέλος, μπορείς να ορίσεις φίλτρα για να στέλνεις π.χ. μόνο τα επείγοντα μηνύματα μέσω email (το οποίο καθυστερεί) και όλα τα άλλα σε ένα flat file. Ευτυχώς, το Enterprise Library περιέχει ένα γραφικό εργαλείο για την επεξεργασία του app.config το οποίο δουλεύει και μέσα από το Visual Studio 2005. Το Enterprise Library θα το βρεις στο http://www.codeplex.com/entlib ενώ το θα βρεις ένα αρκετά καλό άρθρο για το tracing στο .NET 2 γενικότερα στο http://msdn.microsoft.com/msdnmag/issues/06/04/CLRInsideOut/default.aspx . Προσωπικά πάντως χρησιμοποιώ το Enterprise Library πάνω από ένα χρόνο και έχει διευκολύνει τη δουλειά μου πάρα πολύ. Μάλιστα, είχα κάνει και μία παρουσίαση σχετικά στο .NET User group, την οποία θα βρεις στο http://www.dotnetzone.gr/cs/files/folders/presentations/entry25877.aspx
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.