Problem mit Log4J

ManuelHegemann

Grünschnabel
Hallo Community,

ich habe mir eine Konfigurationsdatei log4j.xml zusammen gebaut, die verschiedene Logger beinhaltet.

Code:
<logger name="MISC" additivity="false">
<level value="debug" />
<appender-ref ref="miscMessagesLog" />
</logger> 
  
<logger name="LOGGER1" additivity="false">
<level value="debug" />
<appender-ref ref="logger1MessagesLog" />
</logger>
  
<logger name="LOGGER2" additivity="false">
<level value="debug" />
<appender-ref ref="logger2MessagesLog" />
</logger>

Nun bekomme ich in einer Methode in der ich loggen möchte entweder LOGGER1, LOGGER2 oder irgend etwas anderes übergeben. Für "irgend etwas anderes" soll dann der Logger "MISC" verwendet werden (im produktiven Code sind es noch viele verschiedene Logger mehr, deshalb kann/möchte ich es nicht über eine if-else-Bedingung machen). Ich hatte nun anfangs gehofft, dass ich "null" oder etwas ähnliches zurück bekomme, wenn ich über Logger.getLog(parameter) den Logger mit einem nicht vorhandenen Konfigurationsnamen aufrufe, das ist aber leider nicht der Fall, wie mich dann die API aufgeklärt hat.

Zur Veranschaulichung hier der Code, der aber leider nicht funktioniert:
Code:
messageLogger = Logger.getLog(parameter);
if(messageLogger == null) {
  messageLogger = Logger.getLog("MISC");
}

Hat jmd. eine Idee wie das anders funktionieren kann?

Vielen Dank im Voraus und Gruß,
Manuel
 
Hallo Tom,

vielen Dank für deine schnelle Antwort. Leider bekomme ich mit deinem vorgeschlagenen Code immer "null" zurück, egal ob der Name in der Konfigurationsdatei existiert oder nicht...

Gruß,
Manuel

***UPDATE***
Es war noch ein Fehler in der Konfiguration meiner Umgebung. Vielen Dank, es funktioniert!
 
Zuletzt bearbeitet:
Zurück