OpenEMS export fehler + Speichern von Logs als externe Dateien

Hallo,

Ich versuche derzeit, die openems in einem Industrie-PC an unserem Projektstandort zu hosten. Ich stehe vor folgenden Problemen und bräuchte unbedingt die Hilfe der Community:

  • Wenn ich das Projekt als jar exportiere und in cmd mit dem Befehl java -jar openems.jar ausführe, erhalte ich folgende Fehlermeldung von einer Modbus-Komponente. Diese Modbus-Bridge ist mit einem PV-Wechselrichter verbunden. In Eclispe funktioniert sie ohne Probleme, aber im Export nicht. Mir ist immer noch nicht klar, wie ich das Problem lösen kann. [EDIT: Ich habe sichergestellt, dass die JDK-Version in der Konsole und in Eclipse 1.8 ist. ]

  • Wegen des oben genannten: Ich habe das EMS in der Eclipse (ich weiß, nicht der beste Weg) 3 Tage lang laufen lassen. Die ersten beiden Tage lief es ohne Probleme, aber später am letzten Tag gab es einige Verbindungsprobleme innerhalb des Netzwerks, wodurch alle Geräte verloren gingen. Ich habe mit solchen Situationen hantiert, aber während dieser Zeit wird eine Menge Log erzeugt. Irgendwie haben all diese Logs den PC überlastet (EMS cycle time 250 ms) und er hat sich aufgehängt. Also musste ich den PC vorsorglich neu starten. Jetzt ist mir nicht klar, wo das Problem lag, denn das Log wird nirgends gespeichert. Ich bin auch neu bei Logger. Gibt es eine Möglichkeit, das Log in Logdateien zu speichern, z.B. INFO-Logs in einer separaten Datei, ERROR-Logs in einer anderen usw.

Ich freue mich auf Ihre Feedback

viele Grüße
Laksh

Hallo Laksh,

https://ops4j1.jira.com/wiki/spaces/paxlogging/pages/499613746/Configuring+Log4J2

Hallo Stefan,

Vielen Veilen dank. Ich habe zeit letzter Woche wegen des Fehlers mein kopf zebrochen. :joy:

  • Du hast Recht. In den “Preferences” der Eclipse IDE war der Compiler noch JDK 15 und nicht JDK 8. Das war mein Fehler. Ich glaube, ich hatte es nicht richtig gespeichert.

  • Danke für den Tip. Ich hatte im POM Datei schon gesehen, dass OpenEMS pax-logging benutzt. Aber es war für mich nicht klar wo es konfiguriert ist. Jetzt habe ich es in DefaultConfigurationWorker konfiguriert.

For future References, falls jemand sucht die gleiche, der code für Logging zu Log Datei von bestimmte Log-Levels sind wie folgendes:

log4j.put("log4j.rootLogger", "infoLogger, warnLogger, errorLogger");

// configuration info logger 
log4j.put("log4j.appender.infoLogger", "org.apache.log4j.DailyRollingFileAppender");
log4j.put("log4j.appender.infoLogger.datePattern", "'.'yyyy-MM-dd'.log'");
log4j.put("log4j.appender.infoLogger.layout", "org.apache.log4j.PatternLayout");
log4j.put("log4j.appender.infoLogger.layout.ConversionPattern", "%d{ISO8601} [%-8.8t] %-5p [%-30.30c] %m%n");
log4j.put("log4j.appender.infoLogger.File", "C:\\PATH_TO_MY_LOGS\\DEBUG\\debug.log");
log4j.put("log4j.appender.infoLogger.filter.a", "org.apache.log4j.varia.LevelRangeFilter");
log4j.put("log4j.appender.infoLogger.filter.a.LevelMin", "INFO");
log4j.put("log4j.appender.infoLogger.filter.a.LevelMax", "INFO");
			
// configuration warn logger 
log4j.put("log4j.appender.warnLogger", "org.apache.log4j.DailyRollingFileAppender");
log4j.put("log4j.appender.warnLogger.datePattern", "'.'yyyy-MM-dd'.log'");
log4j.put("log4j.appender.warnLogger.layout", "org.apache.log4j.PatternLayout");
log4j.put("log4j.appender.warnLogger.layout.ConversionPattern", "%d{ISO8601} [%-8.8t] %-5p [%-30.30c] %m%n");
log4j.put("log4j.appender.warnLogger.File", "C:\\PATH_TO_MY_LOGS\\WARNINGS\\warn.log");
log4j.put("log4j.appender.warnLogger.filter.a", "org.apache.log4j.varia.LevelRangeFilter");
log4j.put("log4j.appender.warnLogger.filter.a.LevelMin", "WARN");
log4j.put("log4j.appender.warnLogger.filter.a.LevelMax", "WARN");
			
// configuration error logger 
log4j.put("log4j.appender.errorLogger", "org.apache.log4j.DailyRollingFileAppender");
log4j.put("log4j.appender.errorLogger.datePattern", "'.'yyyy-MM-dd'.log'");
log4j.put("log4j.appender.errorLogger.layout", "org.apache.log4j.PatternLayout");
log4j.put("log4j.appender.errorLogger.layout.ConversionPattern", "%d{ISO8601} [%-8.8t] %-5p [%-30.30c] %m%n");
log4j.put("log4j.appender.errorLogger.File", "C:\\PATH_TO_MY_LOGS\\ERRORS\\error.log");
log4j.put("log4j.appender.errorLogger.filter.a", "org.apache.log4j.varia.LevelRangeFilter");
log4j.put("log4j.appender.errorLogger.filter.a.LevelMin", "ERROR");
log4j.put("log4j.appender.errorLogger.filter.a.LevelMax", "FATAL");

Mit der obere Config sind the Log Dateien automatisch nach einen Tag als Backup gespeichert.

viele Grüße
Laksh

1 Like