Ведение сервлета Tomcat - PullRequest
11 голосов
/ 01 июля 2010

Я новичок в контейнерах сервлетов и создал веб-приложение с использованием Tomcat 6.0.26. У меня есть «TODO: журнал» разбросаны по всему моему коду. Я вижу, что существует:

myServlet.getServletContext (). LOG ()

, который, кажется, записывает в файл с префиксом 'localhost' в каталоге Tomcat '/ logs'. Мне не нужны какие-либо расширенные возможности ведения журналов, но я бы хотел, чтобы как минимум дата, время, сообщения и трассировка стека. Кроме того, я создал несколько классов, используемых моими различными сервлетами, которым также нужны возможности ведения журналов. Нужно ли вводить SevletContext в эти классы, чтобы они могли регистрироваться?

Похоже, что log4j от Apache является популярным пакетом регистрации, но я не уверен, стоит ли его настраивать.

Каков рекомендуемый способ ведения журнала для моих нужд?

Ответы [ 2 ]

10 голосов
/ 01 июля 2010

Вы не хотите связывать весь свой бизнес и код доступа к данным с ServletContext (я, конечно, предполагаю, что ваш бизнес и код БД не тесно связаны внутри класса сервлетов, а просто живут на своем собственном уровнеклассов, без каких-либо javax.servlet ссылок).Поэтому я бы не рекомендовал использовать ServletContext#log().Это также очень редко используется в реальном мире.

Вы правы, что log4j популярен, хотя за ним последовал logback .Настройка log4j не должна быть такой сложной.Я предлагаю начать с файла свойств, который менее сложен для понимания, чем файл XML.Вы всегда можете обновить файл до XML, как только поймете, что происходит в конфигурации log4j.

Создайте файл с именем log4j.properties, поместите его где-нибудь в корень пути к классам, например, /WEB-INF/classes (или если вывы используете IDE, корень папки src, она в конечном итоге окажется в нужном месте).Вы также можете оставить его вне веб-приложения и добавить его путь к пути к классам среды выполнения сервера, указав его путь в свойстве 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.

Однако вы можете изменить его, чтобы использовать файловый аппендер следующим образом:

# Set root logger level and appender name.
log4j.rootLogger = INFO, file

Настройки ConversionPattern подробно можно найти в PatternLayout javadoc .

Надеюсь, это поможет вам начать работу.

8 голосов
/ 01 июля 2010

В дополнение ко всему, что BalusC упомянул выше, в вашем Java-коде (сервлеты / бины / что угодно) просто импортируйте и инициализируйте Logger

package my.app;

import org.apache.log4j.Logger;

private static Logger logger = Logger.getLogger("classname");
// use any string you want 

Затем в любой точке входа вы можете войти на различных уровнях, таких как

if (logger.isDebugEnabled()) {
            logger.debug("Some log at this point");
        }

...

logger.info("Some info message here");

Они появятся в журналах в зависимости от того, настроили ли вы DEBUG или INFO в log4j.propeties

Взгляните на примеры по http://www.java2s.com/Code/Java/Language-Basics/Examplelog4jConfigurationFile.htm и все связанные примеры в той же статье

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...