private static final Logger logger = LoggerFactory.getLogger(TestSub1.class);
Dans ce cas, la description est différente pour chaque fichier de classe et il faut faire attention lors de la copie.
TestSample1.java
package test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestSample1 {
private static final Logger logger = LoggerFactory.getLogger(TestSub1.class);
public void exec() {
logger.debug("Exec method was executed.");
}
}
private final Logger logger = LoggerFactory.getLogger(this.getClass());
Si vous utilisez ceci, vous ne pouvez pas le rendre «statique», mais vous pouvez le copier car la description est la même dans chaque fichier de classe.
TestSample2.java
package test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestSample2 {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public void exec() {
logger.debug("TestSample#Exec method was executed.");
}
}
private static final Logger logger = LoggerFactory.getLogger(Util.getClassName());
En utilisant la méthode ʻUtil # getClassName`, tous les fichiers de classe ont la même description et peuvent être copiés. Il peut également être utilisé avec «statique».
TestSample3.java
package test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestSample3 {
private static final Logger logger = LoggerFactory.getLogger(Util.getClassName());
public void exec() {
logger.debug("TestSample3#exec method was executed.");
}
}
Util.java
package test;
public class Util {
public static String getClassName() {
return Thread.currentThread().getStackTrace()[2].getClassName();
}
}
Il est possible d'injecter des instances dans Logger
en utilisant @ Produces
et @ Inject
.
Tous les fichiers de classe ont la même description et peuvent être copiés.
SampleManagedBean.java
package test.mb;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
@Named
@SessionScoped
public class SampleManagedBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private transient Logger logger;
public String execute() {
logger.info("SampleManagedBean#execute method was executed.");
return null;
}
}
LoggerFactoryProducer.java
package test.util;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Dependent
public class LoggerFactoryProducer {
@Produces
public Logger getLogger(InjectionPoint ip) {
return LoggerFactory.getLogger(ip.getMember().getDeclaringClass().getName());
}
}
c'est tout