Ich möchte Slf4j mit Logback in eine Legacy-Anwendung nachrüsten. Gut, dass die Legacy-Anwendung ihr eigenes Logging-Framework hat. Alles, was ich tun musste, ist, das Logging-Framework so zu ändern, dass es nach slf4j statt log4j loggt.Wrapping der slf4j API
Es funktionierte wie ein Traum. Ich war glücklich, bis ich den Ort Logback für jedes Log-Ereignis protokolliert:
Logger.java:...
Huch! Das würde meinen Entwicklerkollegen nicht viel helfen, wenn sie herausfinden wollten, woher ein Log-Ereignis kam.
Wie kann ich Logback sagen, um ein paar Ebenen im Stapel nach dem tatsächlichen Standort zu suchen, um zu loggen?
Der Logger-Klasse ist eine Utility-Klasse mit Methoden wie folgt aus:
public static void debug(String clazz, String message) {
org.slf4j.Logger logger = LoggerFactory.getLogger(clazz);
logger.debug(message);
}
ähnliche Frage: http: // stackoverflow.com/questions/1486233/java-logging-show-the-source-line-number-of-the-caller-not-the-logging-helper-m – Thilo
funktionierte das, wenn es log4j verwendete? Ich würde denken, da Sie eine vorhandene Protokollierungsklasse aktualisiert haben, haben Sie dem Aufrufstapel keinen zusätzlichen Rahmen hinzugefügt, sodass die log4j-Version das gleiche Problem aufweisen sollte. – Thilo
log4j legt eine Protokollmethode in seiner öffentlichen API offen, die einen zusätzlichen Frame im Stapel darstellt, während slf4j dies nicht tut. Also ja, es hat mit log4j funktioniert. –