Μετά την προσθήκη του log4j στην εφαρμογή μου λαμβάνω την ακόλουθη έξοδο κάθε φορά που εκτελώ την εφαρμογή μου:
<pre>, log4j:WARN Δεν μπόρεσαν να βρεθούν προσαρτητές για τον καταγραφέα (slideselector.facedata.FaceDataParser). log4j:WARN Παρακαλούμε αρχικοποιήστε σωστά το σύστημα log4j. </pre>,
Φαίνεται ότι αυτό σημαίνει ότι λείπει ένα αρχείο ρυθμίσεων. Πού πρέπει να βρίσκεται αυτό το αρχείο ρυθμίσεων και ποιο είναι ένα καλό αρχικό περιεχόμενο;
Χρησιμοποιώ απλή java για την ανάπτυξη μιας εφαρμογής γραφείου. Έτσι, δεν υπάρχει webserver κλπ...
Το Log4j από προεπιλογή αναζητά ένα αρχείο που ονομάζεται log4j.properties ή log4j.xml στο classpath. Μπορείτε να ελέγξετε ποιο αρχείο χρησιμοποιεί για να αρχικοποιηθεί, ορίζοντας τις ιδιότητες του συστήματος όπως περιγράφεται εδώ (Αναζητήστε την ενότητα "Default Initialization Procedure").
Για παράδειγμα:
java -Dlog4j.configuration=customName ....
Θα αναγκάσει το log4j να αναζητήσει ένα αρχείο με όνομα customName στο classpath.
Αν έχετε προβλήματα θεωρώ χρήσιμο να ενεργοποιήσετε το log4j.debug:
-Dlog4j.debug
Θα εκτυπώσει στο System.out πολλές χρήσιμες πληροφορίες σχετικά με το ποιο αρχείο χρησιμοποίησε για να αρχικοποιηθεί, ποιοι καταγραφείς/προσαρμογείς ρυθμίστηκαν και πώς κλπ.
Το αρχείο ρυθμίσεων μπορεί να είναι ένα αρχείο ιδιοτήτων java ή ένα αρχείο xml. Ακολουθεί ένα δείγμα της μορφής του αρχείου ιδιοτήτων που προέρχεται από τη σελίδα τεκμηρίωσης της εισαγωγής του log4j:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Βρείτε ένα αρχείο log4j.properties ή log4j.xml στο διαδίκτυο που να έχει ένα root appender και τοποθετήστε το στο classpath σας.
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
θα καταγράφει στην κονσόλα. Προτιμώ την καταγραφή σε ένα αρχείο, ώστε να μπορείτε να ερευνήσετε αργότερα.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=test.log
log4j.appender.file.threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug,file
αν και για τις εφαρμογές φραστικής καταγραφής τα 100KB συνήθως πρέπει να αυξηθούν σε 1MB ή 10MB, ειδικά για αποσφαλμάτωση.
Προσωπικά δημιουργώ πολλαπλούς καταγραφείς και ορίζω τον καταγραφέα root σε επίπεδο προειδοποίησης ή σφάλματος αντί για debug.
Τι αναπτύσσετε; Χρησιμοποιείτε τον Apache Tomcat;
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [[%5p] %c{1} [%t]] %m%n
Έχω μια τέτοια ιδιότητα σε μια εφαρμογή μου σε Java.