diff --git a/src/zutil/log/LogUtil.java b/src/zutil/log/LogUtil.java index e9bfbc2..0a9c32a 100644 --- a/src/zutil/log/LogUtil.java +++ b/src/zutil/log/LogUtil.java @@ -60,7 +60,7 @@ public class LogUtil { } /** - * Sets the global log formatter to the specified one + * Sets the log formatter to all root Handlers * * @param f is the formatter class */ @@ -72,7 +72,7 @@ public class LogUtil { } /** - * Adds the log formatter + * Adds the log formatter to all handlers in the namespace * * @param f is the formatter class */ @@ -90,6 +90,14 @@ public class LogUtil { setLevel("", level); } + /** + * Addsd a Handler to the root namespace + */ + public static void addGlobalHandler(Handler handler){ + Logger root = Logger.getLogger(""); + root.addHandler(handler); + } + /** * Sets the log level for a specified class */ diff --git a/src/zutil/log/net/NetLogGuiClientInstance.java b/src/zutil/log/net/NetLogGuiClientInstance.java index 1099f75..1961ce4 100644 --- a/src/zutil/log/net/NetLogGuiClientInstance.java +++ b/src/zutil/log/net/NetLogGuiClientInstance.java @@ -35,11 +35,13 @@ import javafx.event.Event; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ProgressBar; +import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; import javafx.scene.control.ToggleButton; import javafx.scene.control.TableView; import javafx.scene.control.Label; import javafx.scene.control.cell.PropertyValueFactory; +import javafx.util.Callback; public class NetLogGuiClientInstance implements Initializable, NetLogListener { private static final Logger logger = LogUtil.getLogger(); @@ -77,7 +79,7 @@ public class NetLogGuiClientInstance implements Initializable, NetLogListener { public void initialize(URL arg0, ResourceBundle arg1) { // Connect to Server try{ - net = new NetLogClient("localhost", 5050); + net = new NetLogClient("127.0.0.1", 5050); net.addListener( this ); status = Status.RUNNING; }catch(Exception e){ diff --git a/src/zutil/log/net/NetLogServer.java b/src/zutil/log/net/NetLogServer.java index 54296a2..5144f5f 100644 --- a/src/zutil/log/net/NetLogServer.java +++ b/src/zutil/log/net/NetLogServer.java @@ -49,7 +49,7 @@ public class NetLogServer extends Handler { public NetLogServer(int port) { super(); net = new NetLogNetwork(port); - + net.start(); } @@ -116,19 +116,22 @@ public class NetLogServer extends Handler { } public void queueMessage(Message log){ - queue.add( log ); - queue.notify(); + synchronized(queue){ + queue.add( log ); + queue.notify(); + } } public void run() { try { while( true ){ - while( !queue.isEmpty() ){ - Message msg = queue.poll(); - out.writeObject( msg ); + synchronized(queue){ + while( !queue.isEmpty() ){ + Message msg = queue.poll(); + out.writeObject( msg ); + } + queue.wait(); } - queue.wait(); - } } catch (Exception e) { logger.log(Level.SEVERE, null, e); @@ -142,8 +145,8 @@ public class NetLogServer extends Handler { try { out.close(); s.close(); - queue = null; threads.remove(this); + queue = null; } catch (IOException e) { logger.log(Level.SEVERE, "Unable to close Client Socket", e); } diff --git a/src/zutil/log/net/NetLoggerClientInstance.css b/src/zutil/log/net/NetLoggerClientInstance.css index 37c1cf1..1be4508 100644 --- a/src/zutil/log/net/NetLoggerClientInstance.css +++ b/src/zutil/log/net/NetLoggerClientInstance.css @@ -1,12 +1,15 @@ - - /* LOG LEVELS */ +.SEVERE { + -fx-control-inner-background: palevioletred; + -fx-accent: derive(-fx-control-inner-background, -40%); + -fx-cell-hover-color: derive(-fx-control-inner-background, -20%); +} .WARNING { -fx-control-inner-background: paleyellow; -fx-accent: derive(-fx-control-inner-background, -40%); -fx-cell-hover-color: derive(-fx-control-inner-background, -20%); } - +.INFO { } .FINE { -fx-control-inner-background: skyblue; -fx-accent: derive(-fx-control-inner-background, -40%); @@ -23,8 +26,10 @@ -fx-cell-hover-color: derive(-fx-control-inner-background, -20%); } -.ERROR { - -fx-control-inner-background: palevioletred; - -fx-accent: derive(-fx-control-inner-background, -40%); - -fx-cell-hover-color: derive(-fx-control-inner-background, -20%); +/* Clear empty rows */ +.table-row-cell:empty { + -fx-background-color: null; +} +.table-row-cell:empty .table-cell { + -fx-border-width: 0px; } \ No newline at end of file diff --git a/src/zutil/net/threaded/ThreadedTCPNetworkServer.java b/src/zutil/net/threaded/ThreadedTCPNetworkServer.java index 4155f17..83bb00a 100644 --- a/src/zutil/net/threaded/ThreadedTCPNetworkServer.java +++ b/src/zutil/net/threaded/ThreadedTCPNetworkServer.java @@ -81,6 +81,7 @@ public abstract class ThreadedTCPNetworkServer extends Thread{ else{ ss = new ServerSocket( port ); } + logger.info("Listening for TCP Connections on port: "+port); while(true){ Socket s = ss.accept(); diff --git a/src/zutil/net/threaded/ThreadedUDPNetwork.java b/src/zutil/net/threaded/ThreadedUDPNetwork.java index 8131ad5..3791fd4 100644 --- a/src/zutil/net/threaded/ThreadedUDPNetwork.java +++ b/src/zutil/net/threaded/ThreadedUDPNetwork.java @@ -49,7 +49,7 @@ public class ThreadedUDPNetwork extends Thread{ protected ThreadedUDPNetworkThread thread = null; /** - * Creates a new unicast Clien instance of the class + * Creates a new unicast Client instance of the class * * @param thread is the class that will handle incoming packets * @throws SocketException diff --git a/src/zutil/test/NetLogServerTest.java b/src/zutil/test/NetLogServerTest.java new file mode 100644 index 0000000..81ee985 --- /dev/null +++ b/src/zutil/test/NetLogServerTest.java @@ -0,0 +1,29 @@ +package zutil.test; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import zutil.log.LogUtil; +import zutil.log.net.NetLogServer; + +public class NetLogServerTest { + public static final Logger logger = LogUtil.getLogger(); + + public static void main(String[] args){ + LogUtil.setGlobalLevel(Level.FINEST); + LogUtil.addGlobalHandler(new NetLogServer(5050)); + + while(true){ + logger.log(Level.SEVERE, "Test Severe"); + logger.log(Level.WARNING, "Test Warning"); + logger.log(Level.INFO, "Test Info"); + logger.log(Level.FINE, "Test Fine"); + logger.log(Level.FINER, "Test Finer"); + logger.log(Level.FINEST, "Test Finest"); + + logger.log(Level.SEVERE, "Test Exception", new Exception("Test")); + + try{Thread.sleep(3000);}catch(Exception e){} + } + } +}