Вы не хотите связывать весь свой бизнес и код доступа к данным с помощью ServletContext
(я, конечно же, предполагаю, что ваш бизнес и код DB не тесно связаны внутри класса сервлета, а просто живут в своем собственном слое классы, без ссылок javax.servlet
). Поэтому я бы не рекомендовал использовать ServletContext#log()
. Это также очень редко используется в реальном мире.
Вы правы, что log4j популярен, хотя он был успешно выполнен logback. Настройка log4j не должна быть такой неприятной. Я предлагаю начать с файла свойств, который менее трудно понять, чем XML-файл. Вы всегда можете перейти на XML-файл, как только вы поймете, что происходит в конфигурации log4j.
Создайте файл с именем log4j.properties
, поместите его где-нибудь в корень пути к классам, например. /WEB-INF/classes
(или если вы используете IDE, корень папки src
, он, в конечном счете, приземлится в нужном месте). Вы также можете сохранить его за пределами webapp и добавить свой путь к пути к классу среды выполнения сервера, указав его путь в свойстве shared.loader
Tomcat/conf/catalina.properties
. Наконец, заполните его следующим образом: пример
# 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
Это стартового бревнами по умолчанию на уровне TRACE
. Вы можете изменить его на DEBUG
или INFO
так:
# Set root logger level and appender name.
log4j.rootLogger = INFO, console
Этот пример также по умолчанию использует консоль Appender. Он будет регистрироваться на стандартный вывод, поскольку он настроен Tomcat, который по умолчанию попадает в файл /logs/localhost.yyyy-MM-dd.log
.
Однако вы можете изменить его, чтобы использовать файл Appender как так:
# Set root logger level and appender name.
log4j.rootLogger = INFO, file
В ConversionPattern
настройки можно найти подробно в PatternLayout
javadoc.
Надеюсь, это поможет вам начать работу.
Спасибо за помощь. Кажется, я не мог найти этот соединительный элемент головоломки. Как в стороне, есть ли причина, по которой средство регистрации, встроенное в JDK, не используется чаще? – Wilson
@Wilson - подробнее об этом обсуждении http://stackoverflow.com/questions/31840/java-logging-vs-log4j и http://stackoverflow.com/questions/582428/java-util-logging-logger-and- log4j – JoseK
@JoseK - Есть ли простой способ зарегистрировать активность сервлета в файле без log4j или консоли? Я задал для этого вопрос. Пожалуйста, помогите мне: https://stackoverflow.com/questions/23858552/simple-way-to-log-servlet-in-tomcat –