Para centralizar e unificar a criação de Log em projetos o CDI oferece a criação de métodos “produtores” para Log, que disponibiliza a api de log a partir de injeção para utilização em classes de context CDI, segue a baixo como criar um método produtor de Logger:
public final class LoggerProducer { @Produces public Logger createLogger(InjectionPoint ip) { return LoggerFactory.getLogger(ip.getMember() .getDeclaringClass().getName()); } }
- @Produtos: Marca o método createLogger como “produtor” de Logger, ou seja, toda vez que injetar Logger(@Inject Logger) o método createLogger será chamado;
- InjectionPoint: Prove acesso a dados da classe onde foi injetado, nesse caso é necessário porque a Factory do logger exige a classe em que será criado o Log;
- ip.getMember().getDeclaringClass().getName(): Retorna o nome da classe que foi injetado;
A baixo a utilização do logger injetado:
@Inject private Logger logger; public void teste() { logger.debug(" ------------- LOG ----------------"); logger.error(" ------------- Log ----------------"); }