barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 29 мая 2012 г.

Включение логирования в Spring Security

Чтобы включить логирование в Spring Security, необходимо настроить commons-logging и log4j (наверное, можно и без log4j, воспользовавшись другими возможностями commons-logging, но я сделал так). Для этого нужно (на примере проекта веб-приложения в NetBeans):

  1. Во-первых, подключить к проекту jar-ник commons-logging и log4j (в моему случае это были commons-logging-1.1.1.jar и log4j-1.2.17.jar). 
  2. Добавить в проект properties-файл commons-logging.properties, поместив его в src/java, со следующим содержанием:
  3. org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
  4. Добавить в проект properties-файл настройки log4j. Я положил его в src/java, назвав log4j.properties. Содержимое файла следующее (для Debug-уровня логирования):
    log4j.rootLogger=DEBUG, console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.conversionPattern=%-4r [%t] %-5p %c %x - %m%n
    В форматах паттернов особенно не разбирался, используется паттенн из мануала log4j (http://logging.apache.org/log4j/1.2/manual.html). В принципе, можно выполнить настройку отдельно для разных логгеров, используемых спрингом, заменив строку:
    log4j.rootLogger=DEBUG, console
    на строки
    log4j.logger.org.springframework.web.context.support.StandardServletEnvironment=DEBUG, console
    и др. для остальных логгеров. Какие именно логгеры использует спринг, станет понятно из лога log4j, который будет ругаться на ненастроенные для какого-либо логгера аппендеры:
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    Но я это делать не стал.
  5. Добавить в web.xml приложения настройку пути к файлу конфигурации log4j и listener, инициализирующий log4j:
    <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>
    <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    Всё, теперь логов будет хоть отбавляй =).
UPDATE:
Если валится исключение org.apache.commons.logging.LogConfigurationException, возможно, поможет это: http://barbitoff.blogspot.com/2012/07/orgapachecommonslogginglogconfiguration.html.

Комментариев нет:

Отправить комментарий