quarta-feira, 22 de fevereiro de 2012

Spring 3.x Profiles e configurações diferentes do log4j


Uma das mais aguardadas e bem vindas novas funcionalidades do Spring Framework 3.x são os bean profiles, permitindo que você configure grupos de beans e escolha qual(is) destes grupos você deseja ativar durante o desenvolvimento, produção, teste etc. Outra boa novidade é o Java Configuration, permitindo que você configure os seus contextos do Spring utilizando somente código Java ao invés dos famigerados arquivos XML.

Nem tanto ao céu, nem tanto ao inferno. XML não é algo ruim. Bem usado, é uma ferramenta valiosa. Mas é fácil exagerar também. De antemão já adianto que o refactoring de arquivos de configuração do Spring que utilizam o Java Configuration é bem mais simples.

Algo que me incomodava no log4j era o fato dele ser configurado através de arquivos disponíveis no classpath como log4j.properties ou log4j.xml. Isso tornava trabalhoso o ato de utilizar configurações diferentes para ambientes diferentes (normalmente utilizando o maven para copiar o arquivo escolhido dependendo do profile utilizado).

Nada como a maravilha do software livre. Analisando o código-fonte, vi que utilizar arquivos de configuração do log4j diferentes para ambiente diferentes é mais simples do que eu pensava.

Com a configuração abaixo você pode utilizar dois arquivos de configuração do log4j: um para teste/desenvolvimento que imprima no console, e outro para produção que grave num rolling file e/ou envie notificações através do SNS, por exemplo.