Non si desidera collegare tutti i dati aziendali e di accesso ai dati con lo ServletContext
(presumo ovviamente che il codice aziendale e del DB non sia strettamente accoppiato all'interno di una classe servlet, ma semplicemente vivano nel proprio livello di classi, senza riferimenti javax.servlet
). Quindi non consiglierei di usare ServletContext#log()
. Inoltre è usato molto raramente nel mondo reale.
Hai ragione che log4j è popolare, anche se è stato sostituito da logback. L'impostazione di log4j non deve essere così problematica. Suggerisco di iniziare con un file delle proprietà che è meno difficile da capire di un file XML. È sempre possibile eseguire l'aggiornamento a un file XML una volta compreso ciò che accade nella configurazione di log4j.
Creare un file denominato log4j.properties
, inserirlo da qualche parte nella radice del classpath, ad es. /WEB-INF/classes
(o se si sta utilizzando un IDE, la radice della cartella src
, alla fine atterrerà nel posto giusto). Puoi anche tenerlo fuori dalla webapp e aggiungere il percorso al classpath di runtime del server specificandone il percorso nella proprietà shared.loader
di Tomcat/conf/catalina.properties
. Infine riempirlo come segue: esempio
# 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
Questo kickoff da tronchi di default ad un livello di TRACE
. È possibile modificare a DEBUG
o INFO
in questo modo:
# Set root logger level and appender name.
log4j.rootLogger = INFO, console
Questo esempio anche di default usa l'appender console. Verrà registrato sullo standard output come configurato da Tomcat, che per impostazione predefinita viene applicato al file /logs/localhost.yyyy-MM-dd.log
.
È possibile tuttavia modificarlo per utilizzare il file appender in questo modo:
# Set root logger level and appender name.
log4j.rootLogger = INFO, file
Le impostazioni ConversionPattern
possono essere trovati in dettaglio nel PatternLayout
javadoc.
Spero che questo ti aiuti a iniziare.
Grazie per l'aiuto. Non riesco a trovare questo pezzo di collegamento del puzzle. Per inciso, c'è un motivo per cui la funzione di registrazione integrata nel JDK non viene utilizzata più frequentemente? – Wilson
@Wilson - altro su quel dibattito http://stackoverflow.com/questions/31840/java-logging-vs-log4j e http://stackoverflow.com/questions/582428/java-util-logging-logger-and- log4j – JoseK
@JoseK - Esiste un modo semplice per registrare l'attività servlet in un file senza log4j o console? Ho pubblicato una domanda per questo. Per favore aiutami a: https://stackoverflow.com/questions/23858552/simple-way-to-log-servlet-in-tomcat –