diff --git a/src/main/ProjectSWG.java b/src/main/ProjectSWG.java index 895f212e7..788d11290 100644 --- a/src/main/ProjectSWG.java +++ b/src/main/ProjectSWG.java @@ -52,18 +52,15 @@ public class ProjectSWG { try { server.run(); } catch (CoreException e) { - System.err.println("ProjectSWG: Shutting down. Reason: " + e.getMessage()); Log.e("CoreManager", "Shutting down. Reason: " + e.getMessage()); Log.e("CoreManager", e); } catch (Exception e) { - e.printStackTrace(); - System.err.println("ProjectSWG: Shutting down - unknown error."); Log.e("CoreManager", "Shutting down - unknown error."); Log.e("CoreManager", e); } server.stop(); server.terminate(); - System.out.println("ProjectSWG: Server shut down."); + Log.i("CoreManager", "Server shut down."); } /** @@ -92,7 +89,6 @@ public class ProjectSWG { long start = System.nanoTime(); manager = new CoreManager(); long end = System.nanoTime(); - System.out.println("ProjectSWG: Created new manager in " + (end-start)/1E6 + "ms"); Log.i(manager, "Created new manager in %.3fms", (end-start)/1E6); while (!shutdownRequested && !manager.isShutdownRequested()) { initialize(); @@ -104,7 +100,6 @@ public class ProjectSWG { start = System.nanoTime(); manager = new CoreManager(); end = System.nanoTime(); - System.out.println("ProjectSWG: Created new manager in " + (end-start)/1E6 + "ms"); Log.i(manager, "Created new manager in %.3fms", (end-start)/1E6); } } @@ -123,20 +118,16 @@ public class ProjectSWG { private void initialize() { setStatus(ServerStatus.INITIALIZING); - System.out.println("ProjectSWG: Initializing..."); Log.i(manager, "Initializing..."); if (!manager.initialize()) throw new CoreException("Failed to initialize."); - System.out.println("ProjectSWG: Initialized. Time: " + manager.getCoreTime() + "ms"); Log.i(manager, "Initialized. Time: %.3fms", manager.getCoreTime()); } private void start() { - System.out.println("ProjectSWG: Starting..."); Log.i(manager, "Starting..."); if (!manager.start()) throw new CoreException("Failed to start."); - System.out.println("ProjectSWG: Started. Time: " + manager.getCoreTime() + "ms"); Log.i(manager, "Started. Time: %.3fms", manager.getCoreTime()); } @@ -154,11 +145,9 @@ public class ProjectSWG { private void stop() { if (manager == null || status == ServerStatus.OFFLINE) return; - System.out.println("ProjectSWG: Stopping..."); Log.i(manager, "Stopping..."); setStatus(ServerStatus.STOPPING); if (!manager.stop()) { - System.err.println("Failed to stop."); Log.e(manager, "Failed to stop."); } long intentWait = System.nanoTime(); @@ -166,25 +155,21 @@ public class ProjectSWG { try { Thread.sleep(10); } catch (InterruptedException e) { - System.err.println("ProjectSWG: Failed to stop! Interrupted with " + IntentManager.getIntentsQueued() + " intents remaining"); Log.e(manager, "Failed to stop! Interrupted with %d intents remaining", IntentManager.getIntentsQueued()); break; } } - System.out.println("ProjectSWG: Stopped. Time: " + manager.getCoreTime() + "ms"); Log.i(manager, "Stopped. Time: %.3fms", manager.getCoreTime()); } private void terminate() { if (manager == null || status == ServerStatus.OFFLINE) return; - System.out.println("ProjectSWG: Terminating..."); Log.i(manager, "Terminating..."); setStatus(ServerStatus.TERMINATING); if (!manager.terminate()) throw new CoreException("Failed to terminate."); setStatus(ServerStatus.OFFLINE); - System.out.println("ProjectSWG: Terminated. Time: " + manager.getCoreTime() + "ms"); Log.i(manager, "Terminated. Time: %.3fms", manager.getCoreTime()); } diff --git a/src/network/NetworkClient.java b/src/network/NetworkClient.java index 52accc585..fdced9ea2 100644 --- a/src/network/NetworkClient.java +++ b/src/network/NetworkClient.java @@ -44,6 +44,7 @@ import java.util.concurrent.locks.ReentrantLock; import resources.network.DisconnectReason; import resources.network.NetBufferStream; +import resources.server_info.Log; import utilities.IntentChain; import network.encryption.Compression; import network.packets.Packet; @@ -176,7 +177,7 @@ public class NetworkClient { packets.add(p); } } catch (EOFException e) { - System.err.println(e.getMessage()); + Log.e("NetworkClient", "EOFException: " + e.getMessage()); } return packets; } @@ -201,7 +202,7 @@ public class NetworkClient { private SWGPacket processSWG(byte [] data) { if (data.length < 6) { - System.err.println("Length too small: " + data.length); + Log.e("NetworkClient", "Length too small: " + data.length); return null; } ByteBuffer buffer = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN); diff --git a/src/network/PacketType.java b/src/network/PacketType.java index 8f345d796..359bef128 100644 --- a/src/network/PacketType.java +++ b/src/network/PacketType.java @@ -240,16 +240,14 @@ public enum PacketType { public static SWGPacket getForCrc(int crc) { PacketType type = packetMap.get(crc); - if (type == null) { - Log.w("PacketType", "Unknown packet: %08X", crc); + if (type == null) return null; - } Class c = type.c; try { return c.newInstance(); } catch (Exception e) { - System.err.printf("Packet: [%08X] %s%n", crc, c.getName()); - e.printStackTrace(); + Log.e("PacketType", "Packet: [%08X] %s", crc, c.getName()); + Log.e("PacketType", e); } return null; } diff --git a/src/network/packets/Packet.java b/src/network/packets/Packet.java index d5b747313..179dc38a4 100644 --- a/src/network/packets/Packet.java +++ b/src/network/packets/Packet.java @@ -29,6 +29,7 @@ package network.packets; import resources.common.CRC; import resources.encodables.Encodable; +import resources.server_info.Log; import utilities.Encoder; import java.net.InetAddress; @@ -107,7 +108,7 @@ public class Packet { break; case UNICODE: for (String s : list) { addUnicode(bb, s); } break; - default: System.err.println("Cannot encode StringType " + type); + default: Log.e("Packet", "Cannot encode StringType " + type); break; } } @@ -287,7 +288,7 @@ public class Packet { int size = getInt(bb); if (size < 0) { - System.err.println("Read list with size less than zero!"); + Log.e("Packet", "Read list with size less than zero!"); return null; } else if (size == 0) { return new ArrayList<>(); @@ -306,7 +307,7 @@ public class Packet { } if (size != list.size()) - System.err.println("Expected list size " + size + " but only have " + list.size() + " elements in the list"); + Log.e("Packet", "Expected list size %d but only have %d elements in the list", size, list.size()); return list; } @@ -326,7 +327,7 @@ public class Packet { int size = getInt(bb); if (size < 0) { - System.err.println("Read list with size less than zero!"); + Log.e("Packet", "Read list with size less than zero!"); return null; } else if (size == 0) { return new ArrayList<>(); @@ -339,7 +340,7 @@ public class Packet { break; case UNICODE: for (int i = 0; i < size; i++) { list.add(getUnicode(bb)); } break; - default: System.err.println("Do not know how to read list of StringType " + type); + default: Log.e("Packet", "Do not know how to read list of StringType " + type); break; } diff --git a/src/network/packets/swg/SWGPacket.java b/src/network/packets/swg/SWGPacket.java index a42e95edc..fb554e2e9 100644 --- a/src/network/packets/swg/SWGPacket.java +++ b/src/network/packets/swg/SWGPacket.java @@ -30,6 +30,7 @@ package network.packets.swg; import network.PacketType; import network.packets.Packet; import resources.common.CRC; +import resources.server_info.Log; import java.nio.ByteBuffer; @@ -59,7 +60,7 @@ public class SWGPacket extends Packet { setSWGOpcode(getInt(data)); if (getSWGOpcode() == crc) return true; - System.err.printf("SWG Opcode does not match actual! Expected: 0x%08X Actual: 0x%08X%n", crc, getSWGOpcode()); + Log.w(getClass().getSimpleName(), "SWG Opcode does not match actual! Expected: 0x%08X Actual: 0x%08X", crc, getSWGOpcode()); return false; } diff --git a/src/network/packets/swg/zone/object_controller/ObjectController.java b/src/network/packets/swg/zone/object_controller/ObjectController.java index 22abeee3b..41bccc863 100644 --- a/src/network/packets/swg/zone/object_controller/ObjectController.java +++ b/src/network/packets/swg/zone/object_controller/ObjectController.java @@ -61,7 +61,7 @@ public abstract class ObjectController extends SWGPacket { return; update = getInt(data); if (getInt(data) != controllerCrc) - System.err.println("ObjectController[" + getClass().getSimpleName() + "] Attempting to process invalid controller"); + Log.e(getClass().getSimpleName(), "Attempting to process invalid controller"); objectId = getLong(data); getInt(data); return; diff --git a/src/resources/client_info/ClientFactory.java b/src/resources/client_info/ClientFactory.java index c2e320f10..0df7cbadd 100644 --- a/src/resources/client_info/ClientFactory.java +++ b/src/resources/client_info/ClientFactory.java @@ -42,6 +42,7 @@ import resources.client_info.visitors.SlotArrangementData; import resources.client_info.visitors.SlotDefinitionData; import resources.client_info.visitors.SlotDescriptorData; import resources.client_info.visitors.WorldSnapshotData; +import resources.server_info.Log; public class ClientFactory extends DataFactory { @@ -134,7 +135,7 @@ public class ClientFactory extends DataFactory { protected ClientData createDataObject(String type) { String c = typeMap.get(type); if (c == null) { - System.err.println("Don't know what class to use for " + type); + Log.e("ClientFactory", "Don't know what class to use for " + type); return null; } @@ -150,7 +151,7 @@ public class ClientFactory extends DataFactory { case "SlotArrangementData": return new SlotArrangementData(); case "WorldSnapshotData": return new WorldSnapshotData(); case "PortalLayoutData": return new PortalLayoutData(); - default: System.err.println("Unimplemented typeMap value: " + c); return null; + default: Log.e("ClientFactory", "Unimplemented typeMap value: " + c); return null; } } diff --git a/src/resources/client_info/DataFactory.java b/src/resources/client_info/DataFactory.java index 4e52d8eea..77a77032f 100644 --- a/src/resources/client_info/DataFactory.java +++ b/src/resources/client_info/DataFactory.java @@ -30,6 +30,8 @@ package resources.client_info; import java.io.File; import java.io.IOException; +import resources.server_info.Log; + /** * Created by Waverunner on 6/9/2015 */ @@ -37,12 +39,12 @@ public abstract class DataFactory { protected ClientData readFile(String filename) { if (filename == null || filename.isEmpty()) { - System.err.println("File cannot be null or empty!"); + Log.e("DataFactory", "File cannot be null or empty!"); return null; } File file = new File(getFolder() + filename); if (!file.isFile()) { - System.err.println("Not a file: " + file); + Log.e("DataFactory", "Not a file: " + file); return null; } @@ -64,7 +66,7 @@ public abstract class DataFactory { protected File writeFile(SWGFile swgFile, ClientData data) { if (swgFile == null || data == null) { - System.err.println("File or data objects cannot be null or empty!"); + Log.e("DataFactory", "File or data objects cannot be null or empty!"); return null; } diff --git a/src/resources/client_info/SWGFile.java b/src/resources/client_info/SWGFile.java index 7cdfe7452..768f675e6 100644 --- a/src/resources/client_info/SWGFile.java +++ b/src/resources/client_info/SWGFile.java @@ -35,6 +35,8 @@ import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.StandardCharsets; +import resources.server_info.Log; + /** * Created by Waverunner on 6/4/2015 */ @@ -86,12 +88,12 @@ public class SWGFile { currentForm = master; if (!isValidIff(bb, size)) { - System.err.println("Tried to open a file not in a valid Interchangeable File Format: " + file.getAbsolutePath()); + Log.e("SWGFile", "Tried to open a file not in a valid Interchangeable File Format: " + file.getAbsolutePath()); return; } if (size != master.populateFromBuffer(bb)) { - System.err.println("Size mismatch between population result and channel size: " + file.getAbsolutePath()); + Log.e("SWGFile", "Size mismatch between population result and channel size: " + file.getAbsolutePath()); return; } diff --git a/src/resources/client_info/ServerFactory.java b/src/resources/client_info/ServerFactory.java index 79166da6c..4ed7d850c 100644 --- a/src/resources/client_info/ServerFactory.java +++ b/src/resources/client_info/ServerFactory.java @@ -76,13 +76,11 @@ public final class ServerFactory extends DataFactory { if (!iff.exists()) { convertSdf(path, name); - System.out.println("Created Server Datatable: " + name); Log.i("ServerFactory", "Created Server Datatable: %s", name); } else { File sif = path.toFile(); if (sif.lastModified() > iff.lastModified()) { convertSdf(path, name); - System.out.println("Updated Server Datatable: " + name); Log.i("ServerFactory", "Updated Server Datatable: %s", name); } } @@ -150,7 +148,7 @@ public final class ServerFactory extends DataFactory { } if (columnNames == null || columnTypes == null) { - System.err.println("Failed to convert sdf " + sif.getFileName()); + Log.e("ServerFactory", "Failed to convert sdf " + sif.getFileName()); return; } @@ -188,7 +186,7 @@ public final class ServerFactory extends DataFactory { case "i": table[rowNum][t] = Integer.valueOf(val); break; case "f": table[rowNum][t] = Float.valueOf(val); break; case "s": table[rowNum][t] = val; break; - default: System.err.println("Don't know how to parse type " + type); break; + default: Log.e("ServerFactory", "Don't know how to parse type " + type); break; } } catch (NumberFormatException e) { Log.e("ServerFactory:createDatableRow", "Cannot format string %s to a number", val); diff --git a/src/resources/client_info/visitors/ObjectData.java b/src/resources/client_info/visitors/ObjectData.java index 713108899..a662806a4 100644 --- a/src/resources/client_info/visitors/ObjectData.java +++ b/src/resources/client_info/visitors/ObjectData.java @@ -37,6 +37,7 @@ import resources.client_info.ClientFactory; import resources.client_info.ClientData; import resources.client_info.IffNode; import resources.client_info.SWGFile; +import resources.server_info.Log; public class ObjectData extends ClientData { @@ -172,7 +173,7 @@ public class ObjectData extends ClientData { ClientData attrData = ClientFactory.getInfoFromFile(file, true); if (attrData == null || !(attrData instanceof ObjectData)) { - System.out.println("Could not load attribute data from file " + file + "!"); + Log.w("ObjectData", "Could not load attribute data from file " + file + "!"); return; // break out of whole method as we should only continue if we have all the extended attributes } diff --git a/src/resources/collections/SWGList.java b/src/resources/collections/SWGList.java index d8dfbeccd..7d4eb1fe6 100644 --- a/src/resources/collections/SWGList.java +++ b/src/resources/collections/SWGList.java @@ -33,6 +33,7 @@ import resources.encodables.Encodable; import resources.network.DeltaBuilder; import resources.network.NetBuffer; import resources.objects.SWGObject; +import resources.server_info.Log; import utilities.Encoder; import utilities.Encoder.StringType; @@ -332,7 +333,7 @@ public class SWGList extends AbstractList implements Encodable, Serializab private void addObjectData(int index, E obj, byte update) { byte[] encodedData = Encoder.encode(obj, strType); if (encodedData == null) { - System.err.println(toString() + " FATAL: Tried to encode an object that could not be encoded properly. Object: " + obj); + Log.e(toString(), "Tried to encode an object that could not be encoded properly. Object: " + obj); return; } diff --git a/src/resources/collections/SWGMap.java b/src/resources/collections/SWGMap.java index b3b421528..709663a1b 100644 --- a/src/resources/collections/SWGMap.java +++ b/src/resources/collections/SWGMap.java @@ -30,6 +30,7 @@ package resources.collections; import resources.encodables.Encodable; import resources.network.NetBuffer; import resources.objects.SWGObject; +import resources.server_info.Log; import utilities.Encoder; import utilities.Encoder.StringType; @@ -233,7 +234,7 @@ public class SWGMap extends AbstractMap implements Encodable, Serial if (value != null && vType.isAssignableFrom(value.getClass())) map.put((K) key, (V) value); else - System.err.println("Unable to parse: key="+key+" value="+value); + Log.e("SWGMap", "Unable to parse: key=%s value=%s", key, value); } } catch (ClassCastException e) { e.printStackTrace(); @@ -251,18 +252,18 @@ public class SWGMap extends AbstractMap implements Encodable, Serial buffer.getByte(); Object key = buffer.getGeneric(kType); if (key == null) { - System.err.println("Failed to decode: "+kType.getSimpleName()); + Log.e("SWGMap", "Failed to decode: "+kType.getSimpleName()); break; } Object value = buffer.getGeneric(vType); if (value == null) { - System.err.println("Failed to decode: "+vType.getSimpleName()); + Log.e("SWGMap", "Failed to decode: "+vType.getSimpleName()); break; } if (kType.isAssignableFrom(key.getClass()) && vType.isAssignableFrom(value.getClass())) map.put((K) key, (V) value); else - System.err.println("Failed to insert key="+key+" value="+value); + Log.e("SWGMap", "Failed to insert key="+key+" value="+value); } clearDeltaQueue(); } @@ -334,7 +335,7 @@ public class SWGMap extends AbstractMap implements Encodable, Serial private void removeData(Object key) { byte[] bytes = data.remove(key); if (bytes == null) { - System.err.println("[SWGMap] Could not remove key as it wasn't in the data map: " + key); + Log.e("SWGMap", "Could not remove key as it wasn't in the data map: " + key); return; } diff --git a/src/resources/collections/SWGSet.java b/src/resources/collections/SWGSet.java index 19de24c35..5336d2c47 100644 --- a/src/resources/collections/SWGSet.java +++ b/src/resources/collections/SWGSet.java @@ -32,6 +32,7 @@ import network.packets.swg.zone.baselines.Baseline; import resources.encodables.Encodable; import resources.network.NetBuffer; import resources.objects.SWGObject; +import resources.server_info.Log; import utilities.Encoder; import utilities.Encoder.StringType; @@ -145,7 +146,7 @@ public class SWGSet extends AbstractSet implements Encodable, Serializable private void addObjectData(E obj, byte update) { byte[] encodedData = Encoder.encode(obj, strType); if (encodedData == null) { - System.err.println(toString() + " FATAL: Tried to encode an object that could not be encoded properly. Object: " + obj); + Log.e("SWGSet", "Tried to encode an object that could not be encoded properly. Object: " + obj); return; } @@ -159,7 +160,7 @@ public class SWGSet extends AbstractSet implements Encodable, Serializable private void removeObjectData(Object obj, byte update) { byte[] encodedData = Encoder.encode(obj, strType); if (encodedData == null) { - System.err.println(toString() + " FATAL: Tried to encode an object that could not be encoded properly. Object: " + obj); + Log.e("SWGSet", "Tried to encode an object that could not be encoded properly. Object: " + obj); return; } diff --git a/src/resources/commands/callbacks/AdminTeleportCallback.java b/src/resources/commands/callbacks/AdminTeleportCallback.java index cce506548..ca72123a7 100644 --- a/src/resources/commands/callbacks/AdminTeleportCallback.java +++ b/src/resources/commands/callbacks/AdminTeleportCallback.java @@ -33,6 +33,7 @@ import resources.Terrain; import resources.commands.ICmdCallback; import resources.objects.SWGObject; import resources.player.Player; +import resources.server_info.Log; import services.galaxy.GalacticManager; public class AdminTeleportCallback implements ICmdCallback { @@ -41,8 +42,8 @@ public class AdminTeleportCallback implements ICmdCallback { public void execute(GalacticManager galacticManager, Player player, SWGObject target, String args) { String [] cmd = args.split(" "); if (cmd.length < 4) { - System.err.println("Error: Wrong Syntax. For teleporting yourself, command has to be: /teleport "); - System.err.println("For teleporting another player, command has to be: /teleport "); + Log.e("AdminTeleportCallback", "Wrong Syntax. For teleporting yourself, command has to be: /teleport "); + Log.e("AdminTeleportCallback", "For teleporting another player, command has to be: /teleport "); return; } double x, y, z; @@ -54,7 +55,7 @@ public class AdminTeleportCallback implements ICmdCallback { y = Double.parseDouble(cmd[cmdOffset+2]); z = Double.parseDouble(cmd[cmdOffset+3]); } catch (NumberFormatException e) { - System.err.println("ERROR: Wrong Syntax or Value. Please enter the command like this: /teleport "); + Log.e("AdminTeleportCallback", "Wrong Syntax or Value. Please enter the command like this: /teleport "); return; } diff --git a/src/resources/control/IntentManager.java b/src/resources/control/IntentManager.java index 75055dd5b..df4485e5c 100644 --- a/src/resources/control/IntentManager.java +++ b/src/resources/control/IntentManager.java @@ -36,6 +36,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.RejectedExecutionException; +import resources.server_info.Log; import utilities.ThreadUtilities; @@ -140,8 +141,8 @@ public class IntentManager { try { r.onIntentReceived(i); } catch (Exception e) { - System.err.println("Fatal Exception while processing intent: " + i); - e.printStackTrace(); + Log.e("IntentManager", "Fatal Exception while processing intent: " + i); + Log.e("IntentManager", e); } } diff --git a/src/resources/control/Manager.java b/src/resources/control/Manager.java index c4219e4e4..64f2423aa 100644 --- a/src/resources/control/Manager.java +++ b/src/resources/control/Manager.java @@ -30,6 +30,8 @@ package resources.control; import java.util.ArrayList; import java.util.List; +import resources.server_info.Log; + /** * A Manager is a class that will manage services, and generally controls the @@ -55,7 +57,7 @@ public abstract class Manager extends Service { synchronized (children) { for (Service child : children) { if (!child.initialize()) { - System.err.println(child.getClass().getSimpleName() + " failed to initialize!"); + Log.e(this, child.getClass().getSimpleName() + " failed to initialize!"); success = false; break; } @@ -76,7 +78,7 @@ public abstract class Manager extends Service { synchronized (children) { for (Service child : children) { if (!child.start()) { - System.err.println(child.getClass().getSimpleName() + " failed to start!"); + Log.e(this, child.getClass().getSimpleName() + " failed to start!"); success = false; break; } @@ -100,7 +102,7 @@ public abstract class Manager extends Service { break; cSuccess = child.stop(); if (!cSuccess) { - System.err.println(child.getClass().getSimpleName() + " failed to stop!"); + Log.e(this, child.getClass().getSimpleName() + " failed to stop!"); success = false; } } diff --git a/src/resources/control/Service.java b/src/resources/control/Service.java index 0b2a7ea8e..f9e5c132b 100644 --- a/src/resources/control/Service.java +++ b/src/resources/control/Service.java @@ -34,6 +34,7 @@ import resources.player.Player; import resources.player.PlayerState; import resources.server_info.Config; import resources.server_info.DataManager; +import resources.server_info.Log; import resources.server_info.RelationalDatabase; @@ -115,7 +116,7 @@ public abstract class Service implements IntentReceiver { * Callback when an intent is received from the system */ public void onIntentReceived(Intent i) { - System.out.println("Warning: " + getClass().getSimpleName() + " did not override onIntentReceived"); + Log.w(this, "Warning: " + getClass().getSimpleName() + " did not override onIntentReceived"); } /** diff --git a/src/resources/encodables/OutOfBandPackage.java b/src/resources/encodables/OutOfBandPackage.java index 9341da5db..815a4ea66 100644 --- a/src/resources/encodables/OutOfBandPackage.java +++ b/src/resources/encodables/OutOfBandPackage.java @@ -29,6 +29,7 @@ package resources.encodables; import network.packets.Packet; import resources.objects.waypoint.WaypointObject; +import resources.server_info.Log; import java.io.IOException; import java.io.ObjectInputStream; @@ -128,7 +129,7 @@ public class OutOfBandPackage implements Encodable, Serializable { packages.add(stringId); break; default: - System.err.println("Tried to decode an unsupported OutOfBandData Type: " + type); + Log.e("OutOfBandPackage", "Tried to decode an unsupported OutOfBandData Type: " + type); break; } } diff --git a/src/resources/encodables/ProsePackage.java b/src/resources/encodables/ProsePackage.java index d53060774..99782430a 100644 --- a/src/resources/encodables/ProsePackage.java +++ b/src/resources/encodables/ProsePackage.java @@ -35,6 +35,8 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.Charset; +import resources.server_info.Log; + public class ProsePackage implements OutOfBandData, Serializable { private static final long serialVersionUID = 1L; @@ -112,13 +114,13 @@ public class ProsePackage implements OutOfBandData, Serializable { case "DI": if (prose instanceof Integer) setDI((Integer) prose); - else { System.err.println("DI can only be a Integer!"); } + else { Log.w("ProsePackage", "DI can only be a Integer!"); } break; case "DF": if (prose instanceof Float) setDF((Float) prose); - else { System.err.println("DF can only be a Float!"); } + else { Log.w("ProsePackage", "DF can only be a Float!"); } break; default: break; @@ -130,8 +132,8 @@ public class ProsePackage implements OutOfBandData, Serializable { if (prose instanceof StringId) { base = (StringId) prose; } else if (prose instanceof String) { if (((String) prose).startsWith("@")) { base = new StringId((String) prose); } - else { System.err.println("The base STF cannot be a custom string!"); } - } else { System.err.println("The base STF must be either a Stf or a String! Received class: " + prose.getClass().getName()); } + else { Log.w("ProsePackage", "The base STF cannot be a custom string!"); } + } else { Log.w("ProsePackage", "The base STF must be either a Stf or a String! Received class: " + prose.getClass().getName()); } } public void setTU(Object prose) { @@ -147,7 +149,7 @@ public class ProsePackage implements OutOfBandData, Serializable { else if (prose instanceof BigInteger) actor.setObjectId(((BigInteger) prose).longValue()); else - System.err.println("Proses can only be Strings or Longs! Received class: " + prose.getClass().getName()); + Log.w("ProsePackage", "Proses can only be Strings or Longs! Received class: " + prose.getClass().getName()); } public void setTT(Object prose) { @@ -163,7 +165,7 @@ public class ProsePackage implements OutOfBandData, Serializable { else if (prose instanceof BigInteger) target.setObjectId(((BigInteger) prose).longValue()); else - System.err.println("Proses can only be Strings or Longs! Received class: " + prose.getClass().getName()); + Log.w("ProsePackage", "Proses can only be Strings or Longs! Received class: " + prose.getClass().getName()); } public void setTO(Object prose) { @@ -179,7 +181,7 @@ public class ProsePackage implements OutOfBandData, Serializable { else if (prose instanceof BigInteger) other.setObjectId(((BigInteger) prose).longValue()); else - System.err.println("Proses can only be Strings or Longs! Received class: " + prose.getClass().getName()); + Log.w("ProsePackage", "Proses can only be Strings or Longs! Received class: " + prose.getClass().getName()); } public void setDI(Integer prose) { diff --git a/src/resources/encodables/StringId.java b/src/resources/encodables/StringId.java index f03c4cf21..253a5f541 100644 --- a/src/resources/encodables/StringId.java +++ b/src/resources/encodables/StringId.java @@ -32,6 +32,8 @@ import network.packets.Packet; import java.io.Serializable; import java.nio.ByteBuffer; +import resources.server_info.Log; + public class StringId implements OutOfBandData, Serializable { private static final long serialVersionUID = 1L; @@ -47,7 +49,7 @@ public class StringId implements OutOfBandData, Serializable { public StringId(String stf) { if (!stf.contains(":")) { - System.err.println("Stf: Invalid stf format! Expected a semi-colon for " + stf); + Log.e("Stf", "Invalid stf format! Expected a semi-colon for " + stf); return; } diff --git a/src/resources/encodables/player/Equipment.java b/src/resources/encodables/player/Equipment.java index 65478cc07..86ee0cb8a 100644 --- a/src/resources/encodables/player/Equipment.java +++ b/src/resources/encodables/player/Equipment.java @@ -35,6 +35,7 @@ import resources.objects.SWGObject; import resources.objects.tangible.TangibleObject; import resources.objects.weapon.WeaponObject; import resources.player.Player; +import resources.server_info.Log; import services.objects.ObjectCreator; import java.io.Serializable; @@ -137,7 +138,7 @@ public class Equipment implements Encodable, Serializable { weapon.parseBaseline(b6); if (weapon instanceof TangibleObject) return (TangibleObject) weapon; - System.err.println("Unknown Equipment Type: " + weapon.getClass().getSimpleName()); + Log.e("Equipment", "Unknown Equipment Type: " + weapon.getClass().getSimpleName()); return null; } diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index e9ca6783a..64556da93 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -225,7 +225,7 @@ public abstract class SWGObject extends BaselineObject implements Comparable { @@ -175,7 +176,7 @@ public class Player implements Comparable { public void sendPacket(Packet ... packets) { if (playerManager != null) playerManager.sendPacket(this, packets); - else System.err.println("Couldn't send packet due to playerManager being null."); + else Log.e("Player", "Couldn't send packet due to playerManager being null."); } @Override diff --git a/src/resources/server_info/CachedObjectDatabase.java b/src/resources/server_info/CachedObjectDatabase.java index 6f7145fe3..cf1ddb57f 100644 --- a/src/resources/server_info/CachedObjectDatabase.java +++ b/src/resources/server_info/CachedObjectDatabase.java @@ -155,15 +155,14 @@ public class CachedObjectDatabase extends ObjectDatabase loaded = true; } catch (IOException | ClassNotFoundException | ClassCastException e) { Log.e("CachedObjectDatabase", "load() - unable to load with error: %s - %s", e.getClass().getSimpleName(), e.getMessage()); - System.err.println("CachedObjectDatabase: Unable to load with error: " + e.getClass().getSimpleName() + " - " + e.getMessage()); return false; } finally { if (ois != null) { try { ois.close(); } catch (Exception e) { - System.err.println("CachedObjectDatabase: Failed to close stream when loading! " + e.getMessage()); - e.printStackTrace(); + Log.e("CachedObjectDatabase", "Failed to close stream when loading! " + e.getMessage()); + Log.e("CachedObjectDatabase", e); } } } diff --git a/src/resources/server_info/DataManager.java b/src/resources/server_info/DataManager.java index dcba6b2a8..7cebbf2a3 100644 --- a/src/resources/server_info/DataManager.java +++ b/src/resources/server_info/DataManager.java @@ -78,7 +78,7 @@ public class DataManager implements IntentReceiver { File f = new File(file.getFilename()); try { if (!createFilesAndDirectories(f)) { - System.err.println("Service: Warning - ConfigFile could not be loaded! " + file.getFilename()); + Log.w("DataManager", "ConfigFile could not be loaded! " + file.getFilename()); } else { config.put(file, new Config(f)); } @@ -100,14 +100,14 @@ public class DataManager implements IntentReceiver { if (parentName != null && !parentName.isEmpty()) { File parent = new File(file.getParent()); if (!parent.exists() && !parent.mkdirs()) - System.err.println(getClass().getSimpleName() + ": Failed to create parent directories for ODB: " + file.getCanonicalPath()); + Log.e(getClass().getSimpleName(), "Failed to create parent directories for ODB: " + file.getCanonicalPath()); } } catch (IOException e) { e.printStackTrace(); } try { if (!file.createNewFile()) - System.err.println(getClass().getSimpleName() + ": Failed to create new ODB: " + file.getCanonicalPath()); + Log.e(getClass().getSimpleName(), "Failed to create new ODB: " + file.getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/resources/server_info/Log.java b/src/resources/server_info/Log.java index f9652192b..9ed154c23 100644 --- a/src/resources/server_info/Log.java +++ b/src/resources/server_info/Log.java @@ -128,6 +128,10 @@ public class Log { } String logStr = String.format(str, args); String log = String.format("%s %c/[%s]: %s", date, level.getChar(), tag, logStr); + if (level.compareTo(LogLevel.WARN) >= 0) + System.err.println(log); + else + System.out.println(log); synchronized (LOG) { try { LOG.write(log); @@ -231,7 +235,7 @@ public class Log { * @param tag the tag to use for the log * @param exception the exception to print */ - public static final void w(String tag, Exception exception) { + public static final void w(String tag, Throwable exception) { printException(LogLevel.WARN, tag, exception); } @@ -241,7 +245,7 @@ public class Log { * @param service the service outputting this log info * @param exception the exception to print */ - public static final void w(Service service, Exception exception) { + public static final void w(Service service, Throwable exception) { printException(LogLevel.WARN, service.getClass().getSimpleName(), exception); } @@ -273,7 +277,7 @@ public class Log { * @param tag the tag to use for the log * @param exception the exception to print */ - public static final void e(String tag, Exception exception) { + public static final void e(String tag, Throwable exception) { printException(LogLevel.ERROR, tag, exception); } @@ -283,7 +287,7 @@ public class Log { * @param service the service outputting this log info * @param exception the exception to print */ - public static final void e(Service service, Exception exception) { + public static final void e(Service service, Throwable exception) { printException(LogLevel.ERROR, service.getClass().getSimpleName(), exception); } @@ -315,7 +319,7 @@ public class Log { * @param tag the tag to use for the log * @param exception the exception to print */ - public static final void a(String tag, Exception exception) { + public static final void a(String tag, Throwable exception) { printException(LogLevel.ASSERT, tag, exception); } @@ -325,11 +329,11 @@ public class Log { * @param service the service outputting this log info * @param exception the exception to print */ - public static final void a(Service service, Exception exception) { + public static final void a(Service service, Throwable exception) { printException(LogLevel.ASSERT, service.getClass().getSimpleName(), exception); } - private static final void printException(LogLevel level, String tag, Exception exception) { + private static final void printException(LogLevel level, String tag, Throwable exception) { log(level, tag, "Exception in thread\"%s\" %s: %s", Thread.currentThread().getName(), exception.getClass().getName(), exception.getMessage()); log(level, tag, "Caused by: %s: %s", exception.getClass(), exception.getMessage()); for (StackTraceElement e : exception.getStackTrace()) { diff --git a/src/resources/server_info/ObjectDatabase.java b/src/resources/server_info/ObjectDatabase.java index d602406ad..6166de8b8 100644 --- a/src/resources/server_info/ObjectDatabase.java +++ b/src/resources/server_info/ObjectDatabase.java @@ -71,11 +71,11 @@ public abstract class ObjectDatabase { if (parentName != null && !parentName.isEmpty()) { File parent = new File(file.getParent()); if (!parent.exists() && !parent.mkdirs()) - System.err.println(getClass().getSimpleName() + ": Failed to create parent directories for ODB: " + file.getCanonicalPath()); + Log.e(getClass().getSimpleName(), "Failed to create parent directories for ODB: " + file.getCanonicalPath()); } try { if (!file.createNewFile()) - System.err.println(getClass().getSimpleName() + ": Failed to create new ODB: " + file.getCanonicalPath()); + Log.e(getClass().getSimpleName(), "Failed to create new ODB: " + file.getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/resources/server_info/RelationalDatabase.java b/src/resources/server_info/RelationalDatabase.java index 9a1b3940d..d103f0780 100644 --- a/src/resources/server_info/RelationalDatabase.java +++ b/src/resources/server_info/RelationalDatabase.java @@ -94,7 +94,7 @@ public abstract class RelationalDatabase implements Closeable { metaData = connection.getMetaData(); online = true; } catch (SQLException e) { - System.err.println("Failed to initialize relational database! " + e.getClass().getSimpleName() + " - " + e.getMessage()); + Log.e("RelationalDatabase", "Failed to initialize relational database! %s - %s", e.getClass().getSimpleName(), e.getMessage()); online = false; } } @@ -105,7 +105,7 @@ public abstract class RelationalDatabase implements Closeable { metaData = connection.getMetaData(); online = true; } catch (SQLException e) { - System.err.println("Failed to initialize relational database! " + e.getClass().getSimpleName() + " - " + e.getMessage()); + Log.e("RelationalDatabase", "Failed to initialize relational database! %s - %s", e.getClass().getSimpleName(), e.getMessage()); online = false; } } @@ -131,7 +131,7 @@ public abstract class RelationalDatabase implements Closeable { public PreparedStatement prepareStatement(String sql) { if (connection == null) { - System.err.println("Cannot prepare statement! Connection is null"); + Log.e("RelationalDatabase", "Cannot prepare statement! Connection is null"); return null; } try { diff --git a/src/resources/server_info/RelationalServerData.java b/src/resources/server_info/RelationalServerData.java index d7080a2a3..5e4796843 100644 --- a/src/resources/server_info/RelationalServerData.java +++ b/src/resources/server_info/RelationalServerData.java @@ -250,7 +250,7 @@ public class RelationalServerData extends RelationalDatabase { private boolean importFromSdb(String table, File sdb) { try (TableReader reader = new TableReader(table, sdb)) { - System.out.println("Importing sdb... '" + sdb + "'"); + Log.i("RelationalServerData", "Importing sdb... '" + sdb + "'"); if (sdb.getName().endsWith(".msdb")) reader.readMaster(); else @@ -261,7 +261,7 @@ public class RelationalServerData extends RelationalDatabase { } catch (SQLException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { - System.err.println("Invalid file format. Aborting read of " + sdb + "! Message: " + e.getMessage()); + Log.e("RelationalServerData", "Invalid file format. Aborting read of %s! Message: %s", sdb, e.getMessage()); } return false; } @@ -322,15 +322,15 @@ public class RelationalServerData extends RelationalDatabase { while ((line = reader.readLine()) != null) { String [] parts = line.split("\t"); if (parts.length != 2) { - System.err.println("RelationalServerData: Invalid line ["+lineNum+"]: " + line); + Log.e("RelationalServerData", "Invalid line [%d]: %s", lineNum, line); continue; } boolean load = Boolean.parseBoolean(parts[1]); if (load) { File sdb = new File(file.getParent(), parts[0]); - System.out.println(" Importing sdb... '" + sdb + "'"); + Log.i("RelationalServerData", " Importing sdb... '" + sdb + "'"); if (!sdb.isFile()) { - System.err.println(" Failed to import sdb! File is not file or does not exist"); + Log.e("RelationalServerData", " Failed to import sdb! File is not file or does not exist"); continue; } @SuppressWarnings("resource") // This closes the database.. we don't want to do that yet @@ -398,7 +398,7 @@ public class RelationalServerData extends RelationalDatabase { private void generateInsert(String [] data, int line) throws SQLException { if (columnTypes.length != data.length) { - System.err.println("Could not load record: Types length and data length mismatch. Line: " + line); + Log.e("RelationalServerData", "Could not load record: Types length and data length mismatch. Line: " + line); return; } int column = 0; @@ -415,7 +415,7 @@ public class RelationalServerData extends RelationalDatabase { } insert.addBatch(); } catch (NumberFormatException e) { - System.err.println("Could not load record: Record has invalid data. Line: " + line + " Column: " + column); + Log.e("RelationalServerData", "Could not load record: Record has invalid data. Line: " + line + " Column: " + column); } } diff --git a/src/resources/server_info/UncachedObjectDatabase.java b/src/resources/server_info/UncachedObjectDatabase.java index 1918de19b..1ca1554be 100644 --- a/src/resources/server_info/UncachedObjectDatabase.java +++ b/src/resources/server_info/UncachedObjectDatabase.java @@ -159,7 +159,7 @@ public class UncachedObjectDatabase extends ObjectDataba } dis.close(); } catch (IOException | ClassNotFoundException | ClassCastException e) { - System.err.println("UncachedObjectDatabase: Unable to load cache with error: " + e.getClass().getSimpleName() + " - " + e.getMessage()); + Log.e("UncachedObjectDatabase", "Unable to load cache with error: %s - %s", e.getClass().getSimpleName(), e.getMessage()); return false; } finally { safeClose(dis); @@ -185,7 +185,7 @@ public class UncachedObjectDatabase extends ObjectDataba } } } catch (IOException | ClassNotFoundException e) { - System.err.println("UncachedObjectDatabase: Unable to traverse with error: " + e.getClass().getSimpleName() + " - " + e.getMessage()); + Log.e("UncachedObjectDatabase", "Unable to traverse with error: %s - %s", e.getClass().getSimpleName(), e.getMessage()); } safeClose(dis); } @@ -221,7 +221,7 @@ public class UncachedObjectDatabase extends ObjectDataba safeClose(outStream); } if (!sFile.delete()) - System.err.println("UncachedObjectDatabase: Failed to delete source file when moving "+sFile+" -> "+dFile); + Log.e("UncachedObjectDatabase", "Failed to delete source file when moving %s -> %s", sFile, dFile); } private V getFromDB(long key) { diff --git a/src/services/CoreManager.java b/src/services/CoreManager.java index ae008cd3e..d0a53b293 100644 --- a/src/services/CoreManager.java +++ b/src/services/CoreManager.java @@ -202,7 +202,7 @@ public class CoreManager extends Manager { } private void initiateShutdownSequence(ServerManagementIntent i) { - System.out.println("Beginning server shutdown sequence..."); + Log.i(this, "Beginning server shutdown sequence..."); long time = i.getTime(); TimeUnit timeUnit = i.getTimeUnit(); diff --git a/src/services/EngineManager.java b/src/services/EngineManager.java index 4dbcdeff4..e03b292c0 100644 --- a/src/services/EngineManager.java +++ b/src/services/EngineManager.java @@ -77,7 +77,6 @@ public class EngineManager extends Manager { for (File f : files) { if (!f.isDirectory() && (f.getName().endsWith(".db") || f.getName().endsWith(".db.tmp"))) { if (!f.delete()) { - System.err.println("EngineManager: Failed to delete ODB: " + f); Log.e("EngineManager", "Failed to delete ODB: %s", f); } } diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java index 6c5143a41..119286cdd 100644 --- a/src/services/admin/OnlineInterfaceService.java +++ b/src/services/admin/OnlineInterfaceService.java @@ -63,7 +63,7 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac httpServer.setMaxConnections(network.getInt("HTTP-MAX-CONNECTIONS", 2)); httpsServer.setMaxConnections(network.getInt("HTTPS-MAX-CONNECTIONS", 5)); if (!httpsServer.initialize(network)) { - System.err.println("Failed to initialize HTTPS server! Incorrect password?"); + Log.e(this, "Failed to initialize HTTPS server! Incorrect password?"); httpServer.stop(); httpsServer.stop(); super.initialize(); @@ -82,7 +82,7 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac httpServer.start(); httpsServer.start(); executor.scheduleAtFixedRate(dataCollectionRunnable, 0, 1, TimeUnit.SECONDS); - System.out.println("OnlineInterfaceService: Web server is now online."); + Log.i(this, "Web server is now online."); } return super.start(); } @@ -167,7 +167,7 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac if (c.containsKey(secondTry)) return InetAddress.getByName(c.getString(secondTry, "127.0.0.1")); } catch (UnknownHostException e) { - System.err.println("NetworkListenerService: Unknown host for IP: " + t); + Log.e(this, "Unknown host for IP: " + t); } return null; } diff --git a/src/services/admin/http/HttpsServer.java b/src/services/admin/http/HttpsServer.java index 449c57022..2a2c059cc 100644 --- a/src/services/admin/http/HttpsServer.java +++ b/src/services/admin/http/HttpsServer.java @@ -56,9 +56,8 @@ public class HttpsServer extends HttpServer { try { return sslServerSocketFactory.createServerSocket(getBindPort(), 0, getBindAddress()); } catch (IOException e) { - System.err.println("Failed to start HTTPS server!"); Log.e("HttpsServer", "Failed to start HTTPS server!"); - e.printStackTrace(); + Log.e("HttpsServer", e); } return null; } diff --git a/src/services/chat/ChatRoomService.java b/src/services/chat/ChatRoomService.java index 8566ff6d5..dba42bd7f 100644 --- a/src/services/chat/ChatRoomService.java +++ b/src/services/chat/ChatRoomService.java @@ -74,6 +74,7 @@ import resources.objects.player.PlayerObject; import resources.player.AccessLevel; import resources.player.Player; import resources.server_info.CachedObjectDatabase; +import resources.server_info.Log; import resources.server_info.ObjectDatabase; import resources.server_info.RelationalServerData; import resources.server_info.RelationalServerFactory; @@ -661,7 +662,7 @@ public class ChatRoomService extends Service { // This can happen if a channel was deleted while the player was offline PlayerObject ghost = player.getPlayerObject(); if (ghost == null) { - System.err.println("Tried to join a room with a path that does not exist: " + path); + Log.e(this, "Tried to join a room with a path that does not exist: " + path); return; } ghost.removeJoinedChannel(path); diff --git a/src/services/commands/CommandService.java b/src/services/commands/CommandService.java index 8aab08e2e..46d2c22cd 100644 --- a/src/services/commands/CommandService.java +++ b/src/services/commands/CommandService.java @@ -101,7 +101,8 @@ public class CommandService extends Service { private void handleCommandRequest(Player player, GalacticManager galacticManager, CommandQueueEnqueue request) { if (!commandExists(request.getCommandCrc())) { - Log.e("CommandService", "Invalid command crc: %x", request.getCommandCrc()); + if (request.getCommandCrc() != 0) + Log.e("CommandService", "Invalid command crc: %x", request.getCommandCrc()); return; } diff --git a/src/services/galaxy/ConnectionService.java b/src/services/galaxy/ConnectionService.java index 623218107..221d0d0d8 100644 --- a/src/services/galaxy/ConnectionService.java +++ b/src/services/galaxy/ConnectionService.java @@ -53,7 +53,6 @@ import resources.player.PlayerFlags; import resources.player.PlayerState; import resources.server_info.Log; import services.CoreManager; -import utilities.DebugUtilities; import utilities.ThreadUtilities; public class ConnectionService extends Service { @@ -76,7 +75,6 @@ public class ConnectionService extends Service { while (iter.hasNext()) { DisappearPlayer p = iter.next(); if ((System.nanoTime()-p.getTime())/1E6 >= DISAPPEAR_THRESHOLD) { - DebugUtilities.printPlayerCharacterDebug(ConnectionService.this, p.getPlayer(), "Disappearing"); disappear(p.getPlayer(), false, DisconnectReason.APPLICATION); iter.remove(); } @@ -225,7 +223,6 @@ public class ConnectionService extends Service { } private void logOut(Player p, boolean addToDisappear) { - System.out.println("[" + p.getUsername() +"] Logged out " + p.getCharacterName()); Log.i("ConnectionService", "Logged out %s with character %s", p.getUsername(), p.getCharacterName()); removeFromLists(p); updatePlayTime(p); @@ -238,7 +235,6 @@ public class ConnectionService extends Service { } private void disappear(Player p, boolean newConnection, DisconnectReason reason) { - System.out.println("[" + p.getUsername() +"] " + p.getCharacterName() + " disappeared"); Log.i("ConnectionService", "Disappeared %s with character %s with reason %s", p.getUsername(), p.getCharacterName(), reason); if (newConnection) // Attempting to re-zone diff --git a/src/services/network/NetworkClientManager.java b/src/services/network/NetworkClientManager.java index 7b141515e..9b27b32de 100644 --- a/src/services/network/NetworkClientManager.java +++ b/src/services/network/NetworkClientManager.java @@ -219,7 +219,6 @@ public class NetworkClientManager extends Manager implements TCPCallback, Packet @Override public void onConnectionDisconnect(Socket s, SocketAddress addr) { - Log.i(this, "Disconnected from %s", addr); if (addr instanceof InetSocketAddress) onSessionDisconnect((InetSocketAddress) addr); else if (addr != null) diff --git a/src/services/objects/ClientBuildoutService.java b/src/services/objects/ClientBuildoutService.java index 08132c607..c7e77b6b8 100644 --- a/src/services/objects/ClientBuildoutService.java +++ b/src/services/objects/ClientBuildoutService.java @@ -68,7 +68,7 @@ public class ClientBuildoutService extends Service { public Collection loadClientObjects() { Collection objects; long startLoad = System.nanoTime(); - logInfo("Loading client objects..."); + Log.i(this, "Loading client objects..."); try { loadAreas(getEvents()); if (getConfig(ConfigFile.PRIMARY).getBoolean("LOAD-OBJECTS", true)) @@ -81,7 +81,7 @@ public class ClientBuildoutService extends Service { Log.e(this, e); } double loadTime = (System.nanoTime() - startLoad) / 1E6; - logInfo("Finished loading %d client objects. Time: %fms", objects.size(), loadTime); + Log.i(this, "Finished loading %d client objects. Time: %fms", objects.size(), loadTime); return objects; } @@ -190,8 +190,6 @@ public class ClientBuildoutService extends Service { } private void setObjectArea(SWGObject obj) { - if (obj.getObjectId() == -507780858040143424L) - System.out.println("MENSIX " + obj.getParent()); if (obj.getParent() != null) { obj.setBuildoutArea(null); return; @@ -201,10 +199,7 @@ public class ClientBuildoutService extends Service { if (area == null || !isWithin(area, world.getTerrain(), world.getX(), world.getZ())) { area = getAreaForObject(obj); obj.setBuildoutArea(area); - if (obj.getObjectId() == -507780858040143424L) - System.out.println(" AREA: " + area); - } else if (obj.getObjectId() == -507780858040143424L) - System.out.println(" NOT SET"); + } } private BuildoutArea createArea(ResultSet set, AreaIndexes ind) throws SQLException { @@ -232,11 +227,6 @@ public class ClientBuildoutService extends Service { return area.getTerrain() == t && x >= area.getX1() && x <= area.getX2() && z >= area.getZ1() && z <= area.getZ2(); } - private void logInfo(String message, Object ... args) { - System.out.printf(getClass().getSimpleName() + ": " + message + "%n", args); - Log.i(this, message, args); - } - private static class AreaIndexes { private int id; diff --git a/src/services/objects/ObjectAwareness.java b/src/services/objects/ObjectAwareness.java index a81d10ae9..dce0bb0e6 100644 --- a/src/services/objects/ObjectAwareness.java +++ b/src/services/objects/ObjectAwareness.java @@ -205,7 +205,7 @@ public class ObjectAwareness extends Service { Location newLocation = i.getNewLocation(); BuildoutArea area = obj.getBuildoutArea(); if (area == null) - System.err.println("Unknown buildout area at: " + obj.getWorldLocation()); + Log.e(this, "Unknown buildout area at: " + obj.getWorldLocation()); else newLocation = area.adjustLocation(newLocation); move(obj, newLocation, true); @@ -250,7 +250,7 @@ public class ObjectAwareness extends Service { } BuildoutArea area = obj.getBuildoutArea(); if (area == null) - System.err.println("Unknown buildout area at: " + obj.getWorldLocation()); + Log.e(this, "Unknown buildout area at: " + obj.getWorldLocation()); else newLocation = area.adjustLocation(newLocation); new PlayerTransformedIntent(obj, obj.getParent(), null, obj.getLocation(), newLocation).broadcast(); @@ -264,7 +264,6 @@ public class ObjectAwareness extends Service { Location newLocation = transformWithParent.getLocation(); newLocation.setTerrain(obj.getTerrain()); if (parent == null) { - System.err.println("ObjectManager: Could not find parent for transform! Cell: " + transformWithParent.getCellId()); Log.e("ObjectManager", "Could not find parent for transform! Cell: %d Object: %s", transformWithParent.getCellId(), obj); return; } diff --git a/src/services/objects/ObjectCreator.java b/src/services/objects/ObjectCreator.java index 65e7b310c..e5c9b3e90 100644 --- a/src/services/objects/ObjectCreator.java +++ b/src/services/objects/ObjectCreator.java @@ -56,6 +56,7 @@ import resources.objects.staticobject.StaticObject; import resources.objects.tangible.TangibleObject; import resources.objects.waypoint.WaypointObject; import resources.objects.weapon.WeaponObject; +import resources.server_info.Log; public final class ObjectCreator { @@ -189,7 +190,7 @@ public final class ObjectCreator { case "tangible": return new TangibleObject(objectId); case "waypoint": return new WaypointObject(objectId); case "weapon": return new WeaponObject(objectId); - default: System.err.println("Unknown type: " + type); return null; + default: Log.e("ObjectCreator", "Unknown type: " + type); return null; } } diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index f33e2e193..4acc99ae9 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -111,14 +111,12 @@ public class ObjectManager extends Manager { private void loadObjects() { long startLoad = System.nanoTime(); Log.i("ObjectManager", "Loading objects from ObjectDatabase..."); - System.out.println("ObjectManager: Loading objects from ObjectDatabase..."); synchronized (database) { database.load(); database.traverse((obj) -> loadObject(obj)); } double loadTime = (System.nanoTime() - startLoad) / 1E6; Log.i("ObjectManager", "Finished loading %d objects. Time: %fms", database.size(), loadTime); - System.out.printf("ObjectManager: Finished loading %d objects. Time: %fms%n", database.size(), loadTime); } private void loadClientObjects() { @@ -152,7 +150,6 @@ public class ObjectManager extends Manager { if (parent != null) parent.addObject(obj); else { - System.err.println("Parent for " + obj + " is null! ParentID: " + id); Log.e("ObjectManager", "Parent for %s is null! ParentID: %d", obj, id); } } else { @@ -349,7 +346,7 @@ public class ObjectManager extends Manager { public SWGObject createObject(SWGObject parent, String template, Location l, boolean addToDatabase) { SWGObject obj = ObjectCreator.createObjectFromTemplate(template); if (obj == null) { - System.err.println("ObjectManager: Unable to create object with template " + template); + Log.e(this, "Unable to create object with template " + template); return null; } obj.setLocation(l); @@ -375,19 +372,16 @@ public class ObjectManager extends Manager { } SWGObject creatureObj = getObjectById(characterId); if (creatureObj == null) { - System.err.println("ObjectManager: Failed to start zone - CreatureObject could not be fetched from database [Character: " + characterId + " User: " + player.getUsername() + "]"); Log.e("ObjectManager", "Failed to start zone - CreatureObject could not be fetched from database [Character: %d User: %s]", characterId, player.getUsername()); sendClientFatal(player, "Failed to zone", "You were not found in the database\nTry relogging to fix this problem", 10, TimeUnit.SECONDS); return; } if (!(creatureObj instanceof CreatureObject)) { - System.err.println("ObjectManager: Failed to start zone - Object is not a CreatureObject for ID " + characterId); Log.e("ObjectManager", "Failed to start zone - Object is not a CreatureObject [Character: %d User: %s]", characterId, player.getUsername()); sendClientFatal(player, "Failed to zone", "There has been an internal server error: Not a Creature.\nPlease delete your character and create a new one", 10, TimeUnit.SECONDS); return; } if (((CreatureObject) creatureObj).getPlayerObject() == null) { - System.err.println("ObjectManager: Failed to start zone - " + player.getUsername() + "'s CreatureObject has a null ghost!"); Log.e("ObjectManager", "Failed to start zone - CreatureObject doesn't have a ghost [Character: %d User: %s", characterId, player.getUsername()); sendClientFatal(player, "Failed to zone", "There has been an internal server error: Null Ghost.\nPlease delete your character and create a new one", 10, TimeUnit.SECONDS); return; diff --git a/src/services/objects/RadialService.java b/src/services/objects/RadialService.java index bd99296bb..506164e55 100644 --- a/src/services/objects/RadialService.java +++ b/src/services/objects/RadialService.java @@ -68,13 +68,11 @@ public class RadialService extends Service { if (target == null) return; if (!(requestor instanceof CreatureObject)) { - System.err.println("Requestor of target: " + target + " is not a creature object!"); Log.w("RadialService", "Requestor of target: %s is not a creature object! %s", target, requestor); return; } Player player = requestor.getOwner(); if (player == null) { - System.err.println("Requestor of target: " + target + " does not have an owner!"); Log.w("RadialService", "Requestor of target: %s does not have an owner! %s", target, requestor); return; } @@ -117,13 +115,11 @@ public class RadialService extends Service { if (target == null) return; if (!(requestor instanceof CreatureObject)) { - System.err.println("Requestor of target: " + target + " is not a creature object!"); Log.w("RadialService", "Requestor of target: %s is not a creature object! %s", target, requestor); return; } Player player = requestor.getOwner(); if (player == null) { - System.err.println("Requestor of target: " + target + " does not have an owner!"); Log.w("RadialService", "Requestor of target: %s does not have an owner! %s", target, requestor); return; } diff --git a/src/services/player/CharacterCreationService.java b/src/services/player/CharacterCreationService.java index edfc8c03b..5385da8cf 100644 --- a/src/services/player/CharacterCreationService.java +++ b/src/services/player/CharacterCreationService.java @@ -112,7 +112,7 @@ public class CharacterCreationService extends Service { nameGenerator.loadAllRules(); loadProfTemplates(); if (!nameFilter.load()) - System.err.println("Failed to load name filter!"); + Log.e(this, "Failed to load name filter!"); return super.initialize(); } @@ -212,7 +212,6 @@ public class CharacterCreationService extends Service { return ErrorMessage.NAME_DECLINED_INTERNAL_ERROR; } else if (createCharacterInDb(characterId, create.getName(), player)) { creationRestriction.createdCharacter(player); - System.out.println("[" + player.getUsername() + "] Create Character: " + create.getName() + ". IP: " + create.getAddress() + ":" + create.getPort()); Log.i("ZoneService", "%s created character %s from %s:%d", player.getUsername(), create.getName(), create.getAddress(), create.getPort()); sendPacket(player, new CreateCharacterSuccess(characterId)); new PlayerEventIntent(player, PlayerEvent.PE_CREATE_CHARACTER).broadcast(); @@ -242,7 +241,6 @@ public class CharacterCreationService extends Service { default: break; } - System.err.println("ZoneService: Unable to create character [Name: " + create.getName() + " User: " + player.getUsername() + "] and put into database! Reason: " + err); Log.e("ZoneService", "Failed to create character %s for user %s with error %s and reason %s from %s:%d", create.getName(), player.getUsername(), err, reason, create.getAddress(), create.getPort()); sendPacket(player, new CreateCharacterFailure(reason)); } diff --git a/src/services/player/LoginService.java b/src/services/player/LoginService.java index 2c2f0a453..c5afe403c 100644 --- a/src/services/player/LoginService.java +++ b/src/services/player/LoginService.java @@ -135,7 +135,6 @@ public class LoginService extends Service { SWGObject obj = intent.getObjectManager().destroyObject(request.getPlayerId()); if (obj != null && obj instanceof CreatureObject) { Log.i("LoginService", "Deleted character %s for user %s", ((CreatureObject)obj).getName(), player.getUsername()); - System.out.println("[" + player.getUsername() + "] Delete Character: " + ((CreatureObject)obj).getName() + ". IP: " + request.getAddress() + ":" + request.getPort()); } else Log.w("LoginService", "Could not delete character! Character: ID: " + request.getPlayerId() + " / " + obj); sendPacket(player, new DeleteCharacterResponse(deleteCharacter(request.getPlayerId()))); @@ -143,19 +142,15 @@ public class LoginService extends Service { private void handleLogin(Player player, LoginClientId id) { if (player.getPlayerState() != PlayerState.CONNECTED) { - System.err.println("Player cannot login when " + player.getPlayerState()); + Log.w(this, "Player cannot login when " + player.getPlayerState()); return; } if (player.getPlayerServer() != PlayerServer.NONE) { - System.err.println("Player cannot login when connected to " + player.getPlayerServer()); + Log.w(this, "Player cannot login when connected to " + player.getPlayerServer()); return; } player.setPlayerServer(PlayerServer.LOGIN); final boolean doClientCheck = getConfig(ConfigFile.NETWORK).getBoolean("LOGIN-VERSION-CHECKS", true); - if (doClientCheck) - Log.d("LoginService", "Running login checks for %s", id.getUsername()); - else - Log.d("LoginService", "Skipping login checks for %s", id.getUsername()); if (!id.getVersion().equals(REQUIRED_VERSION) && doClientCheck) { onLoginClientVersionError(player, id); return; @@ -187,7 +182,6 @@ public class LoginService extends Service { } private void onLoginClientVersionError(Player player, LoginClientId id) { - System.err.println("LoginService: " + id.getUsername() + " cannot login due to invalid version code: " + id.getVersion()); Log.i("LoginService", "%s cannot login due to invalid version code: %s, expected %s from %s:%d", player.getUsername(), id.getVersion(), REQUIRED_VERSION, id.getAddress(), id.getPort()); String type = "Login Failed!"; String message = "Invalid Client Version Code: " + id.getVersion(); @@ -213,7 +207,6 @@ public class LoginService extends Service { default: player.setAccessLevel(AccessLevel.PLAYER); break; } sendLoginSuccessPacket(player); - System.out.println("[" + player.getUsername() + "] Connected to the login server. IP: " + id.getAddress() + ":" + id.getPort()); Log.i("LoginService", "%s connected to the login server from %s:%d", player.getUsername(), id.getAddress(), id.getPort()); new LoginEventIntent(player.getNetworkId(), LoginEvent.LOGIN_SUCCESS).broadcast(); } @@ -222,7 +215,6 @@ public class LoginService extends Service { String type = "Login Failed!"; String message = "Sorry, you're banned!"; sendPacket(player.getNetworkId(), new ErrorMessage(type, message, false)); - System.err.println("[" + id.getUsername() + "] Can't login - Banned! IP: " + id.getAddress() + ":" + id.getPort()); Log.i("LoginService", "%s cannot login due to a ban, from %s:%d", player.getUsername(), id.getAddress(), id.getPort()); player.setPlayerState(PlayerState.DISCONNECTED); new LoginEventIntent(player.getNetworkId(), LoginEvent.LOGIN_FAIL_BANNED).broadcast(); @@ -233,7 +225,6 @@ public class LoginService extends Service { String message = getUserPassError(set, id.getUsername(), id.getPassword()); sendPacket(player, new LoginIncorrectClientId(getServerString(), "3.14159265")); sendPacket(player, new ErrorMessage(type, message, false)); - System.err.println("[" + id.getUsername() + "] Invalid user/pass combo! IP: " + id.getAddress() + ":" + id.getPort()); Log.i("LoginService", "%s cannot login due to invalid user/pass from %s:%d", id.getUsername(), id.getAddress(), id.getPort()); player.setPlayerState(PlayerState.DISCONNECTED); new LoginEventIntent(player.getNetworkId(), LoginEvent.LOGIN_FAIL_INVALID_USER_PASS).broadcast(); diff --git a/src/services/player/ZoneManager.java b/src/services/player/ZoneManager.java index 5f8aaccd3..9db386a1e 100644 --- a/src/services/player/ZoneManager.java +++ b/src/services/player/ZoneManager.java @@ -148,7 +148,6 @@ public class ZoneManager extends Manager { if (firstZone) playerObj.setStartPlayTime((int) System.currentTimeMillis()); initPlayerBeforeZoneIn(player, creature, playerObj); - System.out.printf("[%s] %s is zoning in%n", player.getUsername(), player.getCharacterName()); Log.i("ObjectManager", "Zoning in %s with character %s", player.getUsername(), player.getCharacterName()); if (firstZone) { new PlayerEventIntent(player, PlayerEvent.PE_FIRST_ZONE).broadcast(); @@ -196,7 +195,7 @@ public class ZoneManager extends Manager { e.printStackTrace(); } } catch (IOException e) { - System.err.println("ZoneManager: Failed to open "+repoDir+" to read commit history"); + Log.e(this, "Failed to open %s to read commit history", repoDir); // An exception is thrown if bash isn't installed. // https://www.eclipse.org/forums/index.php/t/1031740/ } @@ -249,7 +248,7 @@ public class ZoneManager extends Manager { case "yellow": waypoint.setColor(WaypointColor.YELLOW); break; case "purple": waypoint.setColor(WaypointColor.PURPLE); break; case "white": waypoint.setColor(WaypointColor.WHITE); break; - default: System.err.println("Don't know color " + p.getColor()); + default: Log.e(this, "Don't know color %s", p.getColor()); break; } ghost.updateWaypoint(waypoint); @@ -258,12 +257,10 @@ public class ZoneManager extends Manager { private void handleCmdSceneReady(Player player, CmdSceneReady p) { new PlayerEventIntent(player, PlayerEvent.PE_ZONE_IN_SERVER).broadcast(); player.setPlayerState(PlayerState.ZONED_IN); - System.out.println("[" + player.getUsername() +"] " + player.getCharacterName() + " zoned in"); Log.i("ZoneService", "%s with character %s zoned in from %s:%d", player.getUsername(), player.getCharacterName(), p.getAddress(), p.getPort()); } private void handleClientIdMsg(Player player, ClientIdMsg clientId) { - System.out.println("[" + player.getUsername() + "] Connected to the zone server. IP: " + clientId.getAddress() + ":" + clientId.getPort()); Log.i("ZoneService", "%s connected to the zone server from %s:%d", player.getUsername(), clientId.getAddress(), clientId.getPort()); player.setPlayerServer(PlayerServer.ZONE); sendPacket(player.getNetworkId(), new HeartBeat()); diff --git a/src/services/spawn/SpawnerService.java b/src/services/spawn/SpawnerService.java index 10d0f923e..62325b067 100644 --- a/src/services/spawn/SpawnerService.java +++ b/src/services/spawn/SpawnerService.java @@ -109,7 +109,6 @@ public final class SpawnerService extends Service { private void loadSpawners(boolean spawnEggs) { long start = System.nanoTime(); int count = 0; - System.out.println("SpawnerService: Loading NPCs..."); Log.i(this, "Loading NPCs..."); try (RelationalDatabase spawnerDatabase = RelationalServerFactory.getServerData("spawn/static.db", "static", "building/buildings", "creatures/creatures", "creatures/npc_stats")) { try (ResultSet set = spawnerDatabase.executeQuery(GET_ALL_SPAWNERS_SQL)) { @@ -125,7 +124,6 @@ public final class SpawnerService extends Service { e.printStackTrace(); } double time = (System.nanoTime()-start)/1E6; - System.out.printf("SpawnerService: Finished loading %d NPCs. Time: %fms%n", count, time); Log.i(this, "Finished loading %d NPCs. Time: %fms", count, time); } diff --git a/src/utilities/Encoder.java b/src/utilities/Encoder.java index d0c27aec2..22157acee 100644 --- a/src/utilities/Encoder.java +++ b/src/utilities/Encoder.java @@ -28,6 +28,7 @@ package utilities; import resources.encodables.Encodable; +import resources.server_info.Log; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -64,7 +65,7 @@ public class Encoder { } else if (object instanceof String){ throw new UnsupportedOperationException("You must specify a String type!"); } else { - System.err.println("[Encoder] Do not know how to encode instance type " + object.getClass().getName()); + Log.e("Encoder", "Do not know how to encode instance type " + object.getClass().getName()); } } return null; diff --git a/src/utilities/Scripts.java b/src/utilities/Scripts.java index cbb2f0ffb..876e5a586 100644 --- a/src/utilities/Scripts.java +++ b/src/utilities/Scripts.java @@ -38,6 +38,8 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; +import resources.server_info.Log; + public class Scripts { private static final String SCRIPTS = "scripts/"; @@ -79,9 +81,9 @@ public class Scripts { // Returning null is all that's necessary return null; } catch (Throwable t) { - System.err.println("Error invoking script: " + script + " with function: " + function); - System.err.println(" Args: " + Arrays.toString(args)); - t.printStackTrace(); + Log.e("Scripts", "Error invoking script: " + script + " with function: " + function); + Log.e("Scripts", " Args: " + Arrays.toString(args)); + Log.e("Scripts", t); return null; } }