Po pridaní log4j do mojej aplikácie dostanem pri každom spustení aplikácie nasledujúci výstup:
log4j:WARN Pre logger (slideselector.facedata.FaceDataParser) sa nepodarilo nájsť žiadne prídavné zariadenia. log4j:WARN Prosím, inicializujte systém log4j správne.
Zdá sa, že to znamená, že chýba konfiguračný súbor. Kde by sa mal tento konfiguračný súbor nachádzať a aký je dobrý počiatočný obsah?
Na vývoj desktopovej aplikácie používam obyčajnú javu. Takže žiadny webový server atď...
Log4j v predvolenom nastavení hľadá na ceste tried súbor s názvom log4j.properties alebo log4j.xml. Môžete ovplyvniť, ktorý súbor použije na svoju inicializáciu, nastavením systémových vlastností, ako je popísané tu (vyhľadajte časť "Predvolený postup inicializácie").
Napríklad:
java -Dlog4j.configuration=customName ....
Spôsobí, že log4j bude hľadať súbor s názvom customName na classpath.
Ak máte problémy, považujem za užitočné zapnúť log4j.debug:
-Dlog4j.debug
Vypíše do System.out veľa užitočných informácií o tom, ktorý súbor sa použil na inicializáciu, ktoré loggery/aplikátory sa nakonfigurovali a ako atď.
Konfiguračným súborom môže byť súbor vlastností java alebo súbor xml. Tu je ukážka formátu súboru vlastností prevzatá zo stránky log4j intro documentation page:
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
Nájdite na internete súbor log4j.properties alebo log4j.xml, ktorý má koreňový prídavný modul, a umiestnite ho do svojej cesty tried.
### 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
bude logovať do konzoly. Ja uprednostňujem logovanie do súboru, aby ste to mohli neskôr preskúmať.
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
hoci pre aplikácie s verbóznym logovaním 100 kB je zvyčajne potrebné zvýšiť na 1 MB alebo 10 MB, najmä pre ladenie.
Osobne nastavujem viacero loggerov a koreňový logger nastavujem na úroveň varovania alebo chyby namiesto ladenia.
Čo vyvíjate? Používate 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
Mám takéto vlastnosti v mojej aplikácii Java.