Ich habe versucht, mein Projekt auf dem neuesten Java 11 auszuführen. Alles funktioniert, außer dem spezifischen Dateilogger. Die Protokollierung funktioniert gut auf früheren Java-Versionen – 10, 9, 8, aber nicht auf Java 11.
Während des Serverlaufs sehe ich nur 1 Warnung:
WARNUNG: sun.reflect.Reflection.getCallerClass wird nicht unterstützt. Dies wirkt sich auf die Leistung aus.
Hier meine Konfiguration:
<Configuration>
<Appenders>
<RollingFile name="postgresDBLog" fileName="${sys:logs.folder}/postgres.log"
filePattern="${sys:logs.folder}/archive/postgres.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="workersLog" fileName="${sys:logs.folder}/worker.log"
filePattern="${sys:logs.folder}/archive/worker.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="statsLog" fileName="${sys:logs.folder}/stats.log"
filePattern="${sys:logs.folder}/archive/stats.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="userLog" fileName="${sys:logs.folder}/blynk.log"
filePattern="${sys:logs.folder}/archive/blynk.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} %-5level- %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="cc.blynk.server.workers" level="debug" additivity="false">
<appender-ref ref="workersLog"/>
</Logger>
<Logger name="cc.blynk.server.workers.StatsWorker" level="debug" additivity="false">
<appender-ref ref="statsLog"/>
</Logger>
<Logger name="cc.blynk.server.db" level="debug" additivity="false">
<appender-ref ref="postgresDBLog"/>
</Logger>
<Logger name="com.zaxxer.hikari" level="OFF" additivity="false">
</Logger>
<Logger name="org.asynchttpclient.netty.channel" level="OFF" additivity="false" />
<!-- turn off netty errors in debug mode for native library loading
https://github.com/blynkkk/blynk-server/issues/751 -->
<Logger name="io.netty" level="INFO" additivity="false" />
<Root>
<AppenderRef ref="userLog"/>
</Root>
</Loggers>
</Configuration>
Alle Logger, außer userLog
funktioniert gut. Jedoch, userLog
ist leer.
log4j2 version 2.11.1
Ubuntu 16.04.5 LTS
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
Aktualisieren:
Hinzufügen level="info"
auf die Root-Ebene behebt das Problem.
<Root level="info">
<AppenderRef ref="userLog"/>
</Root>
In meinem Projekt habe ich jedoch einen Code verwendet, der eine Protokollebene basierend auf der Eigenschaftendatei festgelegt hat. Hier ist ein Code:
private static void changeLogLevel(String level) {
Level newLevel = Level.valueOf(level);
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration conf = ctx.getConfiguration();
conf.getLoggerConfig(LogManager.ROOT_LOGGER_NAME).setLevel(newLevel);
ctx.updateLoggers(conf);
}
Scheint, als ob dieser Teil mit Java 11 nicht mehr funktioniert.
Irgendetwas, das Sie beim Wechsel von Java10 zu Java11 beobachtet haben? Sieht seltsam aus.
– Namann
29. Oktober 2018 um 15:59 Uhr
Ich habe nichts geändert, gleiches Glas, gleiche Umgebung, verschiedene JVMs.
– Dmitrij Dumanskij
29. Oktober 2018 um 16:00 Uhr
@nullpointer Ich kann dieselbe Warnung sehen, wenn ich meine App auf JDK 11 (mit 2.11.1 und 2.11.0) ausführe. Es gibt keine Warnung zu JDK 10. Mein Projekt ist groß, daher ist es schwierig, ein reproduzierbares Beispiel zu erstellen.
– MartyIX
2. November 2018 um 9:01 Uhr
“Scheint so, als würde dieser Teil mit Java 11 nicht mehr funktionieren.” – Die Warnung sagt nicht, dass es nicht funktioniert. Es sagt, es funktioniert … langsam.
– Stefan C
31. Januar 2019 um 0:20 Uhr
Ja, aber dieser Code funktioniert nicht mehr mit Java 11.
– Dmitrij Dumanskij
31. Januar 2019 um 8:29 Uhr