zobelrob
Occasional Observer

Logging mit slf4j funktioniert nicht im SiteArchitect

Jump to solution

Hallo zusammen,

wir haben das Problem, dass unsere Module im SiteArchitect keine Infos ins Log schreiben.

Wir benutzen in unseren Java-Programmen die Logging Facade slf4j ( https://www.slf4j.org/ ). Der Hintergrund ist der, das wir unsere Eigenentwicklungen in verschiedenen Systemen benutzen, die  meistens eigene Logging-Mechanismen haben (wie ja auch FirstSpirit). Durch slf4j müssen wir unseren Quellcode nicht pro System anpassen und können diesen einfach wieder verwenden.

Dieses Vorgehen hat bei FirstSpirit-Version 5.1.2.515 funktioniert. Aktuell sind wir auf 5.1.2.1714 und hier funktioniert es nicht mehr.

Eine Analyse hat gezeigt, dass in der fs-client.jar nun auch die Datei "org.slf4j.impl.StaticLoggerBinder" existiert und somit das Logging übernimmt. Bei slf4j darf es nur eine StaticLoggerBinder-Klasse geben, daher habe ich unsere eigene Implementierung dieser Klasse verworfen.

Das Logging auf dem FirstSpirit-Server funktioniert, ohne das wir die Protokollierungseinstellungen ändern mussten.

Jedoch funktioniert es nicht im SiteArchitect. Im SiteArchitect-Log steht gar nichts von meinem Programm. Ich habe auch verschiede Log-Level versucht, ohne Erfolg.

Wenn ich den SiteArchitect aus Eclipse heraus aufrufe, bekomme ich zumindest folgende Warnung:

log4j:WARN No appenders could be found for logger (com.grozbeckert.firstspirit.XXX).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Es kommt also log4j zum Einsatz und dieses hat keinen Log-Appender für meine Klasse. Daher wird auch nichts geloggt.

Meine Frage ist nun, warum gibt es diesen Unterschied zwischen SiteArchitect und FirstSpirit-Server beim Logging? Warum funktioniert es auf dem Server und im Client nicht?

Und wie bekomme ich es hin, dass auch im SiteArchitect mit slf4j geloggt werden kann? Es ist sicherlich nur eine Konfiguration, jedoch verstehe ich die Arbeitsweise von FirstSpirit hier nicht.

Ich hoffe die Frage ist nicht zu speziell.

Beste Grüße

Robert Zobel

10 Replies
hbarthel
New Responder

I've investigated a bit more and found, that FS base logging in SiteArchitect uses JUL. So I added to the Gradle build file:

    fsModuleCompile 'org.slf4j:slf4j-jdk14:2.0.13'

which makes the slf4j calls go to JUL... and it works. But in general I would assume, it works out of the box, without even adding slf4j-api jar to the module. The slf4j-api should just be a compile time dependency.

0 Kudos