Nie chcesz wiązać wszystkich firm i kodu dostępu do danych z ServletContext
(oczywiście zakładam, że twoja firma i kod DB nie są ściśle powiązane w klasie serwletów, ale po prostu żyj we własnej warstwie klasy, bez żadnych odniesień javax.servlet
). Dlatego nie polecam używania ServletContext#log()
. Jest również bardzo rzadko używany w prawdziwym świecie.
Masz rację, że log4j jest popularny, mimo że został zastąpiony przez logback. Konfiguracja log4j nie musi być tak kłopotliwa. Proponuję zacząć od pliku właściwości, który jest trudniejszy do zrozumienia niż plik XML. Zawsze możesz uaktualnić do pliku XML, gdy zrozumiesz, co się dzieje w konfiguracji log4j.
Utwórz plik o nazwie log4j.properties
, umieść go gdzieś w katalogu głównym ścieżki klas, np. /WEB-INF/classes
(lub jeśli korzystasz z IDE, z katalogu głównego src
, trafi on ostatecznie we właściwe miejsce). Możesz także zachować go poza aplikacją webową i dodać ścieżkę do ścieżki klas środowiska wykonawczego serwera, określając jego ścieżkę w shared.loader
właściwości Tomcat/conf/catalina.properties
. Wreszcie wypełnić go w następujący sposób: Przykład
# Set root logger level and appender name.
log4j.rootLogger = TRACE, console
# Specify appenders.
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
# Configure console appender.
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %m%n
# Configure file appender.
log4j.appender.file.File = /webapp/logs/web.log
log4j.appender.file.DatePattern = '.'yyyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %m%n
Ten KickOff domyślnie dzienników na poziomie TRACE
. Można go zmienić na DEBUG
lub INFO
tak:
# Set root logger level and appender name.
log4j.rootLogger = INFO, console
Ten przykład również domyślnie używa appender konsoli. Loguje się do standardowego wyjścia, ponieważ jest skonfigurowane przez Tomcat, który domyślnie ląduje w pliku /logs/localhost.yyyy-MM-dd.log
.
Można jednak zmienić go używać appender pliku tak:
# Set root logger level and appender name.
log4j.rootLogger = INFO, file
Ustawienia ConversionPattern
można znaleźć szczegółowo w PatternLayout
javadoc.
Mam nadzieję, że to pomoże Ci zacząć.
Dzięki za pomoc. Nie mogłem znaleźć tego łączącego elementu układanki. Czy na marginesie, czy istnieje przyczyna, dla której mechanizm logowania wbudowany w JDK nie jest częściej używany? – Wilson
@Wilson - więcej o tej debacie http://stackoverflow.com/questions/31840/java-logging-vs-log4j i http://stackoverflow.com/questions/582428/java-util-logging-logger-and- log4j – JoseK
@JoseK - Czy istnieje prosty sposób rejestrowania działania serwletu w pliku bez log4j lub konsoli? Zadałem na to pytanie. Proszę mi pomóc w - https://stackoverflow.com/questions/23858552/simple-way-to-log-servlet-in-tomcat –