Verwenden Sie bei der Ausgabe von Log in Java Bibliotheken wie Log4j und Logback oder java.util.logging. Die meisten Bibliotheken und APIs erhalten und generieren Logger-Instanzen wie folgt.
Logger logger = Logger.getLogger(Hoge.class);
Das Schreiben in jeder Klasse ist mühsam. Lassen Sie uns einen einfacheren Weg finden, mit Spring zu schreiben.
Es ist fast eine Einführung in die Implementierung dieser Site. http://memorynotfound.com/spring-inject-logger-annotation-example/
Vielen Dank.
Wenn Sie Spring verwenden, können Sie Logger wie folgt in das mit Anmerkungen versehene Feld einfügen:
@Log
private static Logger logger;
Der Umfang der Beschreibung ist gering, es ist jedoch nicht erforderlich, die Klasse des Arguments anzugeben, damit Sie den Fehler von Logger beseitigen können (was manchmal durch Kopieren erfolgen sollte).
Ich werde erklären, wie es implementiert wird.
Erstellen Sie eine Protokollanmerkung wie unten gezeigt.
Log.java
@Retention(RUNTIME)
@Target(FIELD)
@Documented
public @interface Log {
}
Da es zur Laufzeit referenziert wird, ist es "@Retention (RUNTIME)", und da das Ziel ein Feld ist, ist es "@Target (FIELD)".
LogInjector
Schreiben Sie mit Spring den Code, um den Logger mit der zuvor erstellten Annotation "@ Log" in das Feld einzufügen.
Erstellen Sie eine BeanPostProcessor-Implementierung für Spring wie unten gezeigt und erstellen Sie einen Logger darin.
@Component
public class LogInjector implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
@Override
public Object postProcessBeforeInitialization(final Object bean, String name) throws BeansException {
ReflectionUtils.doWithFields(bean.getClass(), new ReflectionUtils.FieldCallback() {
public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
// make the field accessible if defined private
ReflectionUtils.makeAccessible(field);
if (field.getAnnotation(Log.class) != null) {
Logger log = Logger.getLogger(bean.getClass());
field.set(bean, log);
}
}
});
return bean;
}
}
Jetzt bist du bereit. Danach können Sie es verwenden, indem Sie die folgenden Schritte ausführen.
Jetzt müssen Sie nicht jedes Mal "getLogger" ausführen.
Recommended Posts