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