WIP161201
parent
a133b70953
commit
6423400249
|
@ -0,0 +1,27 @@
|
||||||
|
package org.hwo.exceptions;
|
||||||
|
|
||||||
|
public abstract class ExtendedExceptionBase extends Exception {
|
||||||
|
|
||||||
|
|
||||||
|
public ExtendedExceptionBase(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExtendedExceptionBase(Throwable cause){
|
||||||
|
super(cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExtendedExceptionBase(String message,Throwable cause){
|
||||||
|
super(message,cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDebugMessage(){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public String getDebugDetails(){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -267,6 +267,16 @@ public class NewSerialPort {
|
||||||
if (ch < 0){
|
if (ch < 0){
|
||||||
if (ch == nsp_RET_TIMEOUT)
|
if (ch == nsp_RET_TIMEOUT)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (ch == nsp_RET_NOTOPEN){
|
||||||
|
NewSerialPort.this.close();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (ch == nsp_RET_OTHER){
|
||||||
|
NewSerialPort.this.close();
|
||||||
|
NewSerialPort.this.open();
|
||||||
|
}
|
||||||
|
|
||||||
throw new IOException(String.format("nsp_read()=%d", ch));
|
throw new IOException(String.format("nsp_read()=%d", ch));
|
||||||
};
|
};
|
||||||
return ch;
|
return ch;
|
||||||
|
@ -282,8 +292,18 @@ public class NewSerialPort {
|
||||||
if (autoOpen && !isOpen())
|
if (autoOpen && !isOpen())
|
||||||
open();
|
open();
|
||||||
|
|
||||||
|
if (!isOpen())
|
||||||
|
throw new IOException("Port not opened");
|
||||||
|
|
||||||
r = nsp_write(nsp, arg0);
|
r = nsp_write(nsp, arg0);
|
||||||
if (r<0){
|
if (r<0){
|
||||||
|
if (r == nsp_RET_NOTOPEN)
|
||||||
|
NewSerialPort.this.close();
|
||||||
|
if (r == nsp_RET_OTHER){
|
||||||
|
NewSerialPort.this.close();
|
||||||
|
NewSerialPort.this.open();
|
||||||
|
}
|
||||||
|
|
||||||
throw new IOException(String.format("nsp_write()=%d", r));
|
throw new IOException(String.format("nsp_write()=%d", r));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
package org.hwo.logging;
|
package org.hwo.logging;
|
||||||
|
|
||||||
public enum LogLevel {
|
public enum LogLevel {
|
||||||
INFO(1),WARN(3),ERROR(5),FATAL(10),DEBUG(25);
|
FATAL(0), // Fehler welche zum Programmabbruch führen
|
||||||
|
ERROR(2), // Fehler, Ereignisse welche erwartetes Verhalten beeinflussen / verhindern
|
||||||
|
WARN(5), // Warnungen, Ereignisse welche zu weiteren Problemen ("Fehlern") führen können
|
||||||
|
INFO(10), // Allgemeine Informationen (Fortschritt, etc.)
|
||||||
|
DEBUG(25), // Ausgaben zur Fehlersuche
|
||||||
|
DEBUGDETAIL(30); // Detailausgaben zur Fehlersuche
|
||||||
|
|
||||||
private final int n;
|
private final int n;
|
||||||
LogLevel(int l){ n=l; };
|
LogLevel(int l){ n=l; };
|
||||||
|
|
|
@ -10,6 +10,8 @@ import java.util.Date;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.hwo.exceptions.ExtendedExceptionBase;
|
||||||
|
|
||||||
public class Logging {
|
public class Logging {
|
||||||
|
|
||||||
private static Logging _inst;
|
private static Logging _inst;
|
||||||
|
@ -21,8 +23,11 @@ public class Logging {
|
||||||
|
|
||||||
List<LoggingListener> loggingListeners;
|
List<LoggingListener> loggingListeners;
|
||||||
|
|
||||||
|
private int limitLogLevel;
|
||||||
|
|
||||||
public Logging(String filename){
|
public Logging(String filename){
|
||||||
loggingListeners = new LinkedList<LoggingListener>();
|
loggingListeners = new LinkedList<LoggingListener>();
|
||||||
|
limitLogLevel = 10;
|
||||||
|
|
||||||
dateFormat = DateFormat.getDateTimeInstance();
|
dateFormat = DateFormat.getDateTimeInstance();
|
||||||
try {
|
try {
|
||||||
|
@ -50,6 +55,13 @@ public class Logging {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getLimitLogLevel() {
|
||||||
|
return limitLogLevel;
|
||||||
|
}
|
||||||
|
public void setLimitLogLevel(int limitLogLevel) {
|
||||||
|
this.limitLogLevel = limitLogLevel;
|
||||||
|
}
|
||||||
|
|
||||||
public void addLoggingListener(LoggingListener listener){
|
public void addLoggingListener(LoggingListener listener){
|
||||||
loggingListeners.add(listener);
|
loggingListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
@ -60,6 +72,9 @@ public class Logging {
|
||||||
private void _log(LogLevel logLevel,String message){
|
private void _log(LogLevel logLevel,String message){
|
||||||
String formattedLine;
|
String formattedLine;
|
||||||
|
|
||||||
|
if (logLevel.getLevel() > limitLogLevel)
|
||||||
|
return;
|
||||||
|
|
||||||
formattedLine = String.format("%s [%-8s] %s", dateFormat.format(new Date()),logLevel.toString(),message);
|
formattedLine = String.format("%s [%-8s] %s", dateFormat.format(new Date()),logLevel.toString(),message);
|
||||||
|
|
||||||
logStream.println(formattedLine);
|
logStream.println(formattedLine);
|
||||||
|
@ -100,8 +115,25 @@ public class Logging {
|
||||||
}
|
}
|
||||||
|
|
||||||
static public void log(Exception e){
|
static public void log(Exception e){
|
||||||
log(LogLevel.ERROR,"An Exception occured: %s [%s]",e.getClass().getName(), e.getMessage());
|
log(LogLevel.ERROR,"Exception: %s [%s]",e.getClass().getName(), e.getMessage());
|
||||||
e.printStackTrace();
|
if (ExtendedExceptionBase.class.isInstance(e)){
|
||||||
|
ExtendedExceptionBase ee = (ExtendedExceptionBase)e;
|
||||||
|
if (ee.getDebugMessage()!=null)
|
||||||
|
log(LogLevel.DEBUG,String.format("%s: %s", e.getClass().getName(),ee.getDebugMessage()));
|
||||||
|
if (ee.getDebugDetails()!=null)
|
||||||
|
log(LogLevel.DEBUGDETAIL,String.format("%s: %s",e.getClass().getName(),ee.getDebugDetails()));
|
||||||
|
log(LogLevel.DEBUG,formatStackTrace(ee.getStackTrace()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static String formatStackTrace(StackTraceElement[] stackTrace){
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
for (StackTraceElement ste: stackTrace){
|
||||||
|
sb.append(String.format("-> %s.%s() = %s:%s\n", ste.getClassName(),ste.getMethodName(),ste.getFileName(),ste.getLineNumber()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
static public Logging getInstance() {
|
static public Logging getInstance() {
|
||||||
|
|
Loading…
Reference in New Issue