From 3b61199ca03a602514457cf7ed640ff6d9a39519 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 29 May 2012 23:27:46 +0400 Subject: fixed #3 --- nbproject/project.properties | 4 +- src/Main.java | 5 ++- src/org/traccar/GenericPipelineFactory.java | 47 ++++++++++++++++++++---- src/org/traccar/Server.java | 10 +++-- src/org/traccar/TrackerEventHandler.java | 7 ++-- src/org/traccar/http/WebServer.java | 7 ++-- src/org/traccar/model/DatabaseDataManager.java | 3 +- src/org/traccar/protocol/T55ProtocolDecoder.java | 16 ++++---- 8 files changed, 67 insertions(+), 32 deletions(-) diff --git a/nbproject/project.properties b/nbproject/project.properties index 98bd4fb1e..b4b477dd5 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -34,15 +34,15 @@ file.reference.jetty-server-8.1.3.v20120416.jar=/home/user/Documents/lib/jetty/j file.reference.jetty-util-8.1.3.v20120416.jar=/home/user/Documents/lib/jetty/jetty-util-8.1.3.v20120416.jar file.reference.junit-4.10.jar=/home/user/Documents/lib/junit-4.10.jar file.reference.mysql-connector-java-5.1.20-bin.jar=/home/user/Documents/lib/mysql-connector-java-5.1.20-bin.jar -file.reference.netty-3.4.1.Final.jar=/home/user/Documents/lib/netty-3.4.1.Final.jar +file.reference.netty-3.4.3.Final.jar=/home/user/Documents/lib/netty-3.4.3.Final.jar file.reference.servlet-api-3.0.jar=/home/user/Documents/lib/jetty/servlet-api-3.0.jar includes=** jar.archive.disabled=${jnlp.enabled} jar.compress=false jar.index=${jnlp.enabled} javac.classpath=\ - ${file.reference.netty-3.4.1.Final.jar}:\ ${file.reference.h2-1.3.166.jar}:\ + ${file.reference.netty-3.4.3.Final.jar}:\ ${file.reference.jetty-http-8.1.3.v20120416.jar}:\ ${file.reference.jetty-io-8.1.3.v20120416.jar}:\ ${file.reference.jetty-server-8.1.3.v20120416.jar}:\ diff --git a/src/Main.java b/src/Main.java index d8a3b397c..8b6f2002e 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,4 +1,5 @@ import org.traccar.Server; +import org.traccar.helper.Log; public class Main { @@ -7,14 +8,14 @@ public class Main { final Server service = new Server(); service.init(args); - System.out.println("starting server..."); + Log.info("starting server..."); service.start(); // Shutdown server properly Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { - System.out.println("shutting down server..."); + Log.info("shutting down server..."); service.stop(); } }); diff --git a/src/org/traccar/GenericPipelineFactory.java b/src/org/traccar/GenericPipelineFactory.java index 13f4c36ac..7577b70fc 100644 --- a/src/org/traccar/GenericPipelineFactory.java +++ b/src/org/traccar/GenericPipelineFactory.java @@ -15,8 +15,11 @@ */ package org.traccar; +import java.net.InetSocketAddress; +import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.*; import org.jboss.netty.handler.logging.LoggingHandler; +import org.traccar.helper.Log; import org.traccar.model.DataManager; /** @@ -44,31 +47,59 @@ public abstract class GenericPipelineFactory implements ChannelPipelineFactory { server.getChannelGroup().add(e.getChannel()); } } - + + /** + * Logging using global logger + */ + protected class StandardLoggingHandler extends LoggingHandler { + + static final String HEX_CHARS = "0123456789ABCDEF"; + + @Override + public void log(ChannelEvent e) { + if (e instanceof MessageEvent) { + MessageEvent event = (MessageEvent) e; + String msg = "[" + ((InetSocketAddress) e.getChannel().getLocalAddress()).getPort() + " - "; + msg += ((InetSocketAddress) event.getRemoteAddress()).getAddress().getHostAddress() + "]"; + + // Append hex message + if (event.getMessage() instanceof ChannelBuffer) { + ChannelBuffer buffer = (ChannelBuffer) event.getMessage(); + msg += " - (HEX: "; + for (int i = buffer.readerIndex(); i < buffer.writerIndex(); i++) { + byte b = buffer.getByte(i); + msg += HEX_CHARS.charAt((b & 0xf0) >> 4); + msg += HEX_CHARS.charAt((b & 0x0F)); + } + msg += ")"; + } + + Log.fine(msg); + } + } + } + public GenericPipelineFactory( TrackerServer server, DataManager dataManager, Boolean loggerEnabled) { this.server = server; this.dataManager = dataManager; this.loggerEnabled = loggerEnabled; } - + protected DataManager getDataManager() { return dataManager; } protected abstract void addSpecificHandlers(ChannelPipeline pipeline); - + public ChannelPipeline getPipeline() { ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("openHandler", new OpenChannelHandler(server)); if (loggerEnabled) { - pipeline.addLast("logger", new LoggingHandler("logger")); + pipeline.addLast("logger", new StandardLoggingHandler()); } addSpecificHandlers(pipeline); - //pipeline.addLast("frameDecoder", new XexunFrameDecoder()); - //pipeline.addLast("stringDecoder", new StringDecoder()); - //pipeline.addLast("objectDecoder", new XexunProtocolDecoder(serverCreator, resetDelay)); - pipeline.addLast("handler", new TrackerEventHandler(dataManager)); + pipeline.addLast("handler", new TrackerEventHandler(dataManager)); return pipeline; } } \ No newline at end of file diff --git a/src/org/traccar/Server.java b/src/org/traccar/Server.java index 654d32321..cbcb68324 100644 --- a/src/org/traccar/Server.java +++ b/src/org/traccar/Server.java @@ -30,6 +30,7 @@ import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; import org.jboss.netty.handler.codec.string.StringEncoder; +import org.traccar.helper.Log; import org.traccar.http.WebServer; import org.traccar.model.DataManager; import org.traccar.model.DatabaseDataManager; @@ -132,12 +133,12 @@ public class Server { if (loggerEnabled) { - Logger logger = Logger.getLogger("logger"); String fileName = properties.getProperty("logger.file"); if (fileName != null) { FileHandler file = new FileHandler(fileName, true); + // Simple formatter file.setFormatter(new Formatter() { private final String LINE_SEPARATOR = System.getProperty("line.separator", "\n"); @@ -147,15 +148,16 @@ public class Server { public String format(LogRecord record) { String line = dateFormat.format(new Date(record.getMillis())); - line += " - "; + line += " " + record.getLevel().getName() + ": "; line += formatMessage(record); line += LINE_SEPARATOR; return line; } }); - logger.setLevel(Level.ALL); - logger.addHandler(file); + // NOTE: Console logger level will remain INFO + Log.getLogger().setLevel(Level.ALL); + Log.getLogger().addHandler(file); } } } diff --git a/src/org/traccar/TrackerEventHandler.java b/src/org/traccar/TrackerEventHandler.java index 8378dece3..e4e45a174 100644 --- a/src/org/traccar/TrackerEventHandler.java +++ b/src/org/traccar/TrackerEventHandler.java @@ -16,6 +16,7 @@ package org.traccar; import org.jboss.netty.channel.*; +import org.traccar.helper.Log; import org.traccar.model.DataManager; import org.traccar.model.Position; @@ -43,9 +44,9 @@ public class TrackerEventHandler extends SimpleChannelHandler { Position position = (Position) e.getMessage(); if (position == null) { - System.out.println("null message"); + Log.info("null message"); } else { - System.out.println( + Log.info( "id: " + position.getId() + ", deviceId: " + position.getDeviceId() + ", valid: " + position.getValid() + @@ -61,7 +62,7 @@ public class TrackerEventHandler extends SimpleChannelHandler { try { dataManager.addPosition(position); } catch (Exception error) { - System.out.println(error.getMessage()); + Log.warning(error.getMessage()); } } } diff --git a/src/org/traccar/http/WebServer.java b/src/org/traccar/http/WebServer.java index 53cdb2966..cf7b21623 100644 --- a/src/org/traccar/http/WebServer.java +++ b/src/org/traccar/http/WebServer.java @@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.AbstractHandler; +import org.traccar.helper.Log; import org.traccar.model.DataManager; import org.traccar.model.Device; import org.traccar.model.Position; @@ -160,7 +161,7 @@ public class WebServer { } } catch (Exception error) { out.print("{'success':false,'results':["); - System.out.println(error.getMessage()); + Log.warning(error.getMessage()); } out.print("]}"); @@ -196,7 +197,7 @@ public class WebServer { try { server.start(); } catch (Exception error) { - System.out.println(error.getMessage()); + Log.warning(error.getMessage()); } } @@ -204,7 +205,7 @@ public class WebServer { try { server.stop(); } catch (Exception error) { - System.out.println(error.getMessage()); + Log.warning(error.getMessage()); } } diff --git a/src/org/traccar/model/DatabaseDataManager.java b/src/org/traccar/model/DatabaseDataManager.java index ece8014ce..ed3335342 100644 --- a/src/org/traccar/model/DatabaseDataManager.java +++ b/src/org/traccar/model/DatabaseDataManager.java @@ -19,6 +19,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import org.traccar.helper.AdvancedConnection; +import org.traccar.helper.Log; import org.traccar.helper.NamedParameterStatement; /** @@ -95,7 +96,7 @@ public class DatabaseDataManager implements DataManager { initializeQuery.prepare(); initializeQuery.executeUpdate(); } catch (Exception error) { - System.out.println(error.getMessage()); + Log.warning(error.getMessage()); } } diff --git a/src/org/traccar/protocol/T55ProtocolDecoder.java b/src/org/traccar/protocol/T55ProtocolDecoder.java index bf956ce4f..98d0079a6 100644 --- a/src/org/traccar/protocol/T55ProtocolDecoder.java +++ b/src/org/traccar/protocol/T55ProtocolDecoder.java @@ -67,8 +67,6 @@ public class T55ProtocolDecoder extends GenericProtocolDecoder { throws Exception { String sentence = (String) msg; - - //System.out.println(sentence); // Detect device ID if (sentence.contains("$PGID")) { @@ -89,11 +87,11 @@ public class T55ProtocolDecoder extends GenericProtocolDecoder { if (!parser.matches()) { return null; } - + // Create new position Position position = new Position(); position.setDeviceId(deviceId); - + Integer index = 1; // Time @@ -103,10 +101,10 @@ public class T55ProtocolDecoder extends GenericProtocolDecoder { time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++))); time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++))); index += 1; // Skip milliseconds - + // Validity position.setValid(parser.group(index++).compareTo("A") == 0 ? true : false); - + // Latitude Double latitude = Double.valueOf(parser.group(index++)); latitude += Double.valueOf(parser.group(index++)) / 60; @@ -134,16 +132,16 @@ public class T55ProtocolDecoder extends GenericProtocolDecoder { } else { position.setCourse(0.0); } - + // Date time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++))); time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1); time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++))); position.setTime(time.getTime()); - + // Altitude position.setAltitude(0.0); - + return position; } -- cgit v1.2.3