Wie finde ich heraus, an welche Bibliothek sich slf4j gebunden hat?
Lesezeit: 2 Minuten
Psykeron
Ich verwende slf4j, um mich in meiner Anwendung anzumelden. Ich verstehe den Zweck von slf4j. Ich würde gerne wissen, wie ich herausfinden kann, an welche Protokollierungsbibliothek slf4j derzeit gebunden ist. Ich habe log4j in meinen referenzierten Bibliotheken. Ich gehe davon aus, dass slf4j sich an log4j gebunden hat.
Was ich gerne wissen würde, ist, gibt es eine Möglichkeit, diese Bindung ausdrücklich zu bestätigen?
Ich schwöre, es gab eine Möglichkeit, das slf4j-Debugging (Meta-Debugging) zu aktivieren, aber ich kann mich nicht erinnern, was es war. Keine der Antworten geht darauf ein.
– Sridhar Sarnobat
15. Januar 2019 um 23:25 Uhr
Tun Sie einfach, was SLF4J tut, um die Bindung zu entdecken:
final StaticLoggerBinder binder = StaticLoggerBinder.getSingleton();
Jetzt können Sie versuchen herauszufinden, was in meinem Fall das tatsächliche Implementierungs-Logback ist:
Einfach. Setzen Sie einen Breakpoint auf .. sagen wir .. LOG.info(…). Sobald der Debugger dort stoppt, treten Sie ein in … und Viola … Sie befinden sich im Code des eigentlichen Loggers … sagen Sie log4j oder logback … was auch immer.
Es ist möglich, dies mit der öffentlichen Haupt-API von slf4j (dh ohne den internen StaticLoggerBinder) zu tun, z. B. um festzustellen, ob slf4j bpound zu log4j2 hat:
if ("org.apache.logging.slf4j.Log4jLoggerFactory".equals(
org.slf4j.LoggerFactory.getILoggerFactory().getClass().getName()
)
{ ... }
Oder vermeiden Sie die Notwendigkeit, StaticLoggerBinder zu haben (das nicht Teil von slf4j-api ist):
log.info(log.getClass().getName());
In meinem Fall wird dies gedruckt
ch.qos.logback.classic.Logger
14358100cookie-checkWie finde ich heraus, an welche Bibliothek sich slf4j gebunden hat?yes
Ich schwöre, es gab eine Möglichkeit, das slf4j-Debugging (Meta-Debugging) zu aktivieren, aber ich kann mich nicht erinnern, was es war. Keine der Antworten geht darauf ein.
– Sridhar Sarnobat
15. Januar 2019 um 23:25 Uhr