On May 10, 2011, at 5:03 PM, Vincent Massol wrote:
Hi,
I'd like to commit @Inject injection of Loggers at the same time as I do the switch to SLF4J/Logback (I have it mostly done on my machine).
The idea is to move from:
public MyComponent implements LogEnabled, MyComponentRole { ... }
to:
public MyComponent implements MyComponentRole { @Inject private Logger logger; ... }
Rationale: * More consistent with how we inject dependencies * Makes it easier to move to another DI framework later on (CDI, Guice, etc) since the way to implement this with them is to use the JSR299 @Producer annotation on a class that produces Loggers.
For the record, here's how it's done with our DI fwk: * Guice: http://glauche.de/2009/08/24/logging-with-slf4j-and-guice/ * Weld: http://docs.jboss.org/weld/reference/1.0.0/en-US/html/extensions.html * CDI in general: http://rbergerpa.blogspot.com/2011/02/dependency-injection-and-logging.html To summarize: * Guice: Based on TypeListeners * CDI: Based on @Produces Thanks -Vincent
* Allows to keep the current logging behavior unchanged for backward compatibility (we juste deprecate it).
WDYT?
Thanks -Vincent