_Logger_ - the logger type (e.g., Logger)public class LogInject<_Logger_> extends Object
LogInject class provides static methods for creating injectee-sensitive bindings for loggers. The
resulting LogInject object's as(Class) method will provide the actual binding object for a
particular dependency injection framework (such as Guice, HK2, etc.).
LogInject allows you to bind loggers with standard JSR-330 annotations:
class TestClass
{
@Inject
Logger logger;
// ...
}
The LogInject class is agnostic of both, logging frameworks and dependency injection frameworks (and it has
no dependencies on either). However, to provide bindings for a specific DI framework, a corresponding
LogInjectionService needs to be installed. The available LogInjectionServices are discovered
dynamically via Java's ServiceLoader mechanism, so it is sufficient to have the service implementation JAR
on the class path (no additional configuration is required). No support is needed for specific logging frameworks.
For example, to use LogInject with the HK2 dependency injection framework Logger,
you could create the following HK2 binder:
AbstractBinder binder = new AbstractBinder()
{
@Override
protected void configure()
{
install(loginject(Logger::getLogger, currentClassName()).as(Binder.class));
addActiveDescriptor(TestClass.class); // other bindings
// ...
}
};
Known Limitations
Currently, loginject only supports factory methods with zero, one, or two parameters.
| Modifier and Type | Method and Description |
|---|---|
<_Binding_> |
as(Class<_Binding_> binding)
Creates dependency injection bindings for a specific DI framework.
|
static <_Logger_,_Parameter0_,_Parameter1_> |
logger(Class<_Logger_> loggerClass,
BiFunction<_Parameter0_,_Parameter1_,_Logger_> loggerFactory,
LogParameter<_Parameter0_> parameter0,
LogParameter<_Parameter1_> parameter1)
Deprecated.
|
static <_Logger_,_Parameter_> |
logger(Class<_Logger_> loggerClass,
Function<_Parameter_,_Logger_> loggerFactory,
LogParameter<_Parameter_> parameter)
Deprecated.
|
static <_Logger_> LogInject<_Logger_> |
logger(Class<_Logger_> loggerClass,
Supplier<_Logger_> loggerSupplier)
Deprecated.
|
static <_Logger_,_Parameter0_,_Parameter1_> |
loginject(BiFunction<_Parameter0_,_Parameter1_,_Logger_> loggerFactory,
LogParameter<_Parameter0_> parameter0,
LogParameter<_Parameter1_> parameter1)
Provides a
LogInject binding that binds a two-argument logger factory method. |
static <_Logger_,_Parameter0_,_Parameter1_> |
loginject(Class<_Logger_> loggerClass,
BiFunction<_Parameter0_,_Parameter1_,_Logger_> loggerFactory,
LogParameter<_Parameter0_> parameter0,
LogParameter<_Parameter1_> parameter1)
Provides a
LogInject binding that binds the specified logger class to a two-argument factory method. |
static <_Logger_,_Parameter_> |
loginject(Class<_Logger_> loggerClass,
Function<_Parameter_,_Logger_> loggerFactory,
LogParameter<_Parameter_> parameter)
Provides a
LogInject binding that binds the specified logger class to a one-argument factory method. |
static <_Logger_> LogInject<_Logger_> |
loginject(Class<_Logger_> loggerClass,
Supplier<_Logger_> factory)
Provides a
LogInject binding that binds the specified logger class to a zero-argument factory method. |
static <_Logger_,_Parameter_> |
loginject(Function<_Parameter_,_Logger_> loggerFactory,
LogParameter<_Parameter_> parameter)
Provides a
LogInject binding that binds a one-argument logger factory method. |
static <_Logger_,_Parameter_> |
loginject(Supplier<_Logger_> loggerFactory)
Provides a
LogInject binding that binds a zero-argument logger factory method. |
public <_Binding_> _Binding_ as(Class<_Binding_> binding)
_Binding_ - the binding typebinding - the binding classLogInjectException - if no implementation for the requested binding class is availablepublic static <_Logger_> LogInject<_Logger_> loginject(Class<_Logger_> loggerClass, Supplier<_Logger_> factory)
LogInject binding that binds the specified logger class to a zero-argument factory method.
Example use:
loginject(Logger.class, LogManager::getLogger)
_Logger_ - the logger typeloggerClass - the logger classfactory - the logger supplierLogInject object presenting the abstract (framework-independent) bindings@Deprecated public static <_Logger_> LogInject<_Logger_> logger(Class<_Logger_> loggerClass, Supplier<_Logger_> loggerSupplier)
loginject(Class, Supplier)_Logger_ - the logger typeloggerClass - the logger classloggerSupplier - the logger supplierLogInject object presenting the abstract (framework-independent) bindingspublic static <_Logger_,_Parameter_> LogInject<_Logger_> loginject(Class<_Logger_> loggerClass, Function<_Parameter_,_Logger_> loggerFactory, LogParameter<_Parameter_> parameter)
LogInject binding that binds the specified logger class to a one-argument factory method.
Example use:
loginject(Logger.class, LogManager::getLogger, currentClass())
_Logger_ - the logger type_Parameter_ - the log parameter typeloggerClass - the logger classloggerFactory - the logger factoryparameter - the LogParameter to be passed to the factory methodLogInject object presenting the abstract (framework-independent) bindings@Deprecated public static <_Logger_,_Parameter_> LogInject<_Logger_> logger(Class<_Logger_> loggerClass, Function<_Parameter_,_Logger_> loggerFactory, LogParameter<_Parameter_> parameter)
loginject(Class, Function, LogParameter)_Logger_ - the logger type_Parameter_ - the log parameter typeloggerClass - the logger classloggerFactory - the logger factoryparameter - the LogParameter to be passed to the factory methodLogInject object presenting the abstract (framework-independent) bindingspublic static <_Logger_,_Parameter0_,_Parameter1_> LogInject<_Logger_> loginject(Class<_Logger_> loggerClass, BiFunction<_Parameter0_,_Parameter1_,_Logger_> loggerFactory, LogParameter<_Parameter0_> parameter0, LogParameter<_Parameter1_> parameter1)
LogInject binding that binds the specified logger class to a two-argument factory method.
Example use:
loginject(Logger.class, LogManager::getLogger, currentClass(), parameter(myMessageFactory))
_Logger_ - the logger type_Parameter0_ - the first log parameter type_Parameter1_ - the first log parameter typeloggerClass - the logger classloggerFactory - the logger factoryparameter0 - the first LogParameter to be passed to the factory methodparameter1 - the second LogParameter to be passed to the factory methodLogInject object presenting the abstract (framework-independent) bindings@Deprecated public static <_Logger_,_Parameter0_,_Parameter1_> LogInject<_Logger_> logger(Class<_Logger_> loggerClass, BiFunction<_Parameter0_,_Parameter1_,_Logger_> loggerFactory, LogParameter<_Parameter0_> parameter0, LogParameter<_Parameter1_> parameter1)
loginject(Class, BiFunction, LogParameter, LogParameter)_Logger_ - the logger type_Parameter0_ - the first log parameter type_Parameter1_ - the first log parameter typeloggerClass - the logger classloggerFactory - the logger factoryparameter0 - the first LogParameter to be passed to the factory methodparameter1 - the second LogParameter to be passed to the factory methodLogInject object presenting the abstract (framework-independent) bindingspublic static <_Logger_,_Parameter_> LogInject<_Logger_> loginject(Supplier<_Logger_> loggerFactory)
LogInject binding that binds a zero-argument logger factory method. The logger type is
inferred from the factory method.
Example use:
loginject(LogManager::getLogger)
_Logger_ - the logger type_Parameter_ - the log parameter typeloggerFactory - the logger supplierLogInject object presenting the abstract (framework-independent) bindingspublic static <_Logger_,_Parameter_> LogInject<_Logger_> loginject(Function<_Parameter_,_Logger_> loggerFactory, LogParameter<_Parameter_> parameter)
LogInject binding that binds a one-argument logger factory method. The logger type is
inferred from the factory method.
Example use:
loginject(LogManager::getLogger, currentClass())
_Logger_ - the logger type_Parameter_ - the log parameter typeloggerFactory - the logger factoryparameter - the LogParameter to be passed to the factory methodLogInject object presenting the abstract (framework-independent) bindingspublic static <_Logger_,_Parameter0_,_Parameter1_> LogInject<_Logger_> loginject(BiFunction<_Parameter0_,_Parameter1_,_Logger_> loggerFactory, LogParameter<_Parameter0_> parameter0, LogParameter<_Parameter1_> parameter1)
LogInject binding that binds a two-argument logger factory method. The logger type is
inferred from the factory method.
Example use:
loginject(LogManager::getLogger, currentClass(), parameter(myMessageFactory))
_Logger_ - the logger type_Parameter0_ - the first log parameter type_Parameter1_ - the first log parameter typeloggerFactory - the logger factoryparameter0 - the first LogParameter to be passed to the factory methodparameter1 - the second LogParameter to be passed to the factory methodLogInject object presenting the abstract (framework-independent) bindingsCopyright © 2016. All rights reserved.