Mit CDI Producern lassen sich die Logger Konfigurationen der Form
1 |
private Logger logger = Logger.getLogger(this.getClass().getName()); |
in jeder Klasse umgehen.
Es ist möglich, einen Logger einfach mit der @Inject Annotation zu injizieren. Hierzu gibt es als Gegenstück zu @Inject die Annotation @Produces (siehe CDI – JSR 299)
Um den Logger überall injizierbar zu machen, wird eine Producer Klasse gebraucht:
1 2 3 4 5 6 7 |
public class Producer { @Produces public Logger produceLogger(InjectionPoint injectionPoint) { return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); } } |
In anderen Klassen kann der Logger wie folgt injiziert werden:
1 2 |
@Inject private Logger logger; |
Über den InjectionPoint wird der Name der Klasse, in welche der Logger injiziert wurde, ausgelesen und dem Logger als Namen übergeben.