среда, 29 октября 2008 г.

Включаем логирование в веб-приложении, основанном на Spring, через Log4j


Развивая тему использования Spring-фреймворка поговорим сегодня об одной из самых важных для разработчика вещей - о логгировании. Для ведения логов многие Java-программисты используют замечательную и очень мощную библиотеку Log4J.

Поэтому сегодня мы поговорим о двух вещах - о том, как подключить log4j к веб-приложению, основаному на Spring и как использовать эту библиотеку для того, чтобы посмотреть, что происходит внутри фреймворка.

Для того, чтобы подключить log4j к веб-приложению необходимо указать спрингу где лежит файл с настройками библиотеки. Для этого в дескриптор развертывания (web.xml) необходимо добавить строки, устанавливающие параметр сервлет-контекста log4jConfigLocation и подключить Log4jConfigListener. Выглядит все это примерно так:

    <context-param>

        <param-name>log4jConfigLocation</param-name>

        <param-value>/WEB-INF/log4j.properties</param-value>

    </context-param>

   

    <listener>

        <listener-class>

            org.springframework.web.util.Log4jConfigListener

        </listener-class>

    </listener>

 


После этого можно корректно использовать log4j в своих классах.

Если хочется посмотреть, что происходит в самом Spring фреймворке возникают сложности. Дело в том, что spring использует не log4j, а commons-logging. Но commons-logging обладает приятной особенностью - она позволяет делегировать логгирование log4j. Для такого делегирования необходимо в classpath приложения (в случае веб-приложения - в /WEB-INF/classes/) создать файл commons-logging.properties, содержащий следующую строку:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger


Ну и конечно же, нужно не забыть в log4j.properties указать нужный уровень логгирования для Spring, например такой:

log4j.logger.org.springframework=debug


Все, после этого можно увидеть много нового и интересного о том, как работает Spring-фреймворк.

Если есть вопросы или пожелания - прошу оставлять их в комментариях.

Понравилось сообщение - подпишись на блог

понедельник, 27 октября 2008 г.

Подключаем Hibernate Interceptor через Spring


Hibernate довольно интересный и кастомизируемый фреймворк. Одной из интересных его особенностей является возможность подключения так называемых интерцепторов - классов, реализующих интерфейс Interceptor, соответствующие методы которых будут вызываться до непосредственной работы с данными. Т.е. в интерцепторе можно изменять сгенерированные sql-запросы, поля у entity-объектов, вести учет колличества выполненных запросов, собирать статистику и делать другие не менее интересные вещи.

Сегодня суровый челябинский программист расскажет о том, как подключить свой интерцептор через Spring и о том, какие при этом возникают проблемы.