2017-09-15 3 views
0

Ich erlebe eine seltsame Situation, die in LogManager.getLogger stalls Application for ~10-30 Seconds when using JDK8: ähnlich beschrieben wurde, aber es wird keine Lösung vorgeschlagen.Log4j langsame Initialisierung mit LogManager.getLogger und getContext()

Die Sache ist die, dass die Initialisierung des Loggers durch

final Logger logger = LogManager.getLogger(MyClass.class.getSimpleName()); 

für fast 7s meine Anwendung Stände (auf neuesten MacBook Pro 15" 2017) IF wenn entweder WiFi deaktiviert oder wenn ich Tethering durch mein iPhone Wenn ich jedoch über mein WiFi eine funktionierende Internetverbindung habe (kein Tethering), funktioniert die log4j - Initialisierung innerhalb von 1,5 Sek. Das ist ein sehr merkwürdiges Verhalten, zuerst dachte ich, dass log4j versucht, auf eine Ressource zuzugreifen Internet und Timeout nach ein paar Sekunden, aber dann wieder: Warum das gleiche Verhalten wenn ich anbinde und damit Zugang zum Internet habe?

Wenn weiter das Debuggen, fand ich, dass dieses Verfahren so lange dauert:

public static LoggerContext getContext(final boolean currentContext) { 
    // TODO: would it be a terrible idea to try and find the caller ClassLoader here? 
    try { 
     return factory.getContext(FQCN, null, null, currentContext, null, null); 
    } catch (final IllegalStateException ex) { 
     LOGGER.warn(ex.getMessage() + " Using SimpleLogger"); 
     return new SimpleLoggerContextFactory().getContext(FQCN, null, null, currentContext, null, null); 
    } 
} 

Gerade dies:

factory.getContext(FQCN, null, null, currentContext, null, null); 

Hat jemand eine Ahnung, warum dies geschieht und wie ich das Problem lösen kann?

Antwort

0

Ich habe gerade das gleiche Problem, wenn ich mein Programm von PC zu MBP mit JDK Version 1.8.0_144 oder 1.8.0_102 übertrage. Ich denke, das ist ein Bug von JDK für Mac.

U kann umgehen, mit JDK Version 1.8.0_31.

+0

Dies bietet keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/17438117) – Olly