diff --git a/src/java/com/threerings/NaryaLog.java b/src/java/com/threerings/NaryaLog.java index 83cb82711..151e3b971 100644 --- a/src/java/com/threerings/NaryaLog.java +++ b/src/java/com/threerings/NaryaLog.java @@ -21,11 +21,10 @@ package com.threerings; -import java.util.logging.Logger; +import com.samskivert.util.Logger; /** - * A placeholder class that contains a reference to the log object used by this - * project. + * Contains a reference to the log object used by this project. */ public class NaryaLog { diff --git a/src/java/com/threerings/admin/Log.java b/src/java/com/threerings/admin/Log.java index bcc99805a..ccd08a5dc 100644 --- a/src/java/com/threerings/admin/Log.java +++ b/src/java/com/threerings/admin/Log.java @@ -21,8 +21,7 @@ package com.threerings.admin; -import java.util.logging.Level; -import java.util.logging.Logger; +import com.samskivert.util.Logger; /** * Contains a reference to the log object used by the Admin services. @@ -31,28 +30,4 @@ public class Log { /** We dispatch our log messages through this logger. */ public static Logger log = Logger.getLogger("com.threerings.narya.admin"); - - /** Convenience function. */ - public static void debug (String message) - { - log.fine(message); - } - - /** Convenience function. */ - public static void info (String message) - { - log.info(message); - } - - /** Convenience function. */ - public static void warning (String message) - { - log.warning(message); - } - - /** Convenience function. */ - public static void logStackTrace (Throwable t) - { - log.log(Level.WARNING, t.getMessage(), t); - } } diff --git a/src/java/com/threerings/admin/client/AsStringFieldEditor.java b/src/java/com/threerings/admin/client/AsStringFieldEditor.java index c9cb0a9bd..dd6e8baf0 100644 --- a/src/java/com/threerings/admin/client/AsStringFieldEditor.java +++ b/src/java/com/threerings/admin/client/AsStringFieldEditor.java @@ -29,7 +29,7 @@ import com.samskivert.util.StringUtil; import com.threerings.presents.dobj.DObject; import com.threerings.presents.util.PresentsContext; -import com.threerings.admin.Log; +import static com.threerings.admin.Log.log; /** * Used to display and edit a particular distributed object field. @@ -89,7 +89,7 @@ public class AsStringFieldEditor extends FieldEditor return new Boolean(_value.getText().equalsIgnoreCase("true")); } else { - Log.warning("Unknown field type '" + _field.getName() + "': " + + log.warning("Unknown field type '" + _field.getName() + "': " + _field.getType().getName() + "."); return null; } diff --git a/src/java/com/threerings/admin/client/ConfigEditorPanel.java b/src/java/com/threerings/admin/client/ConfigEditorPanel.java index fef49c0cd..2bc4b1041 100644 --- a/src/java/com/threerings/admin/client/ConfigEditorPanel.java +++ b/src/java/com/threerings/admin/client/ConfigEditorPanel.java @@ -30,7 +30,7 @@ import com.samskivert.swing.VGroupLayout; import com.threerings.presents.util.PresentsContext; -import com.threerings.admin.Log; +import static com.threerings.admin.Log.log; /** * Fetches a list of the configuration objects in use by the server and @@ -111,7 +111,7 @@ public class ConfigEditorPanel extends JPanel // documentation inherited from interface public void requestFailed (String reason) { - Log.warning("Failed to get config info [reason=" + reason + "]."); + log.warning("Failed to get config info [reason=" + reason + "]."); } /** Our client context. */ diff --git a/src/java/com/threerings/admin/client/ConfigObjectManager.java b/src/java/com/threerings/admin/client/ConfigObjectManager.java index e539ab0cb..b7ec589a2 100644 --- a/src/java/com/threerings/admin/client/ConfigObjectManager.java +++ b/src/java/com/threerings/admin/client/ConfigObjectManager.java @@ -32,10 +32,11 @@ import com.threerings.presents.dobj.DObjectManager; import com.threerings.presents.dobj.ObjectAccessException; import com.threerings.presents.dobj.Subscriber; -import com.threerings.admin.Log; import com.threerings.admin.data.AdminCodes; import com.threerings.admin.data.ConfigObject; +import static com.threerings.admin.Log.log; + /** * Handles subscribing to admin config objects. */ @@ -84,7 +85,7 @@ public class ConfigObjectManager implements AdminService.ConfigInfoListener // documentation inherited from interface AdminService.ConfigInfoListener public void requestFailed (String reason) { - Log.warning("Oh bugger, we didn't get the config data: " + reason); + log.warning("Oh bugger, we didn't get the config data: " + reason); } /** @@ -121,7 +122,7 @@ public class ConfigObjectManager implements AdminService.ConfigInfoListener // documentation inherited from interface Subscriber public void requestFailed (int oid, ObjectAccessException cause) { - Log.warning("Unable to subscribe to config object " + _key); + log.warning("Unable to subscribe to config object " + _key); } /** diff --git a/src/java/com/threerings/admin/client/DSetEditor.java b/src/java/com/threerings/admin/client/DSetEditor.java index da7c9eea4..719aa35c2 100644 --- a/src/java/com/threerings/admin/client/DSetEditor.java +++ b/src/java/com/threerings/admin/client/DSetEditor.java @@ -40,7 +40,6 @@ import com.samskivert.util.ClassUtil; import com.samskivert.util.ComparableArrayList; import com.samskivert.util.ListUtil; -import com.threerings.presents.Log; import com.threerings.presents.dobj.AttributeChangeListener; import com.threerings.presents.dobj.AttributeChangedEvent; import com.threerings.presents.dobj.DObject; @@ -50,6 +49,8 @@ import com.threerings.presents.dobj.EntryRemovedEvent; import com.threerings.presents.dobj.EntryUpdatedEvent; import com.threerings.presents.dobj.SetListener; +import static com.threerings.presents.Log.log; + /** * Allows simple editing of DSets within a distributed object. */ diff --git a/src/java/com/threerings/admin/client/FieldEditor.java b/src/java/com/threerings/admin/client/FieldEditor.java index c3739f54a..1745686e6 100644 --- a/src/java/com/threerings/admin/client/FieldEditor.java +++ b/src/java/com/threerings/admin/client/FieldEditor.java @@ -43,7 +43,7 @@ import com.threerings.presents.dobj.DObject; import com.threerings.presents.dobj.ObjectAccessException; import com.threerings.presents.util.PresentsContext; -import com.threerings.admin.Log; +import static com.threerings.admin.Log.log; /** * Used to display and edit a particular distributed object field. @@ -107,7 +107,7 @@ public abstract class FieldEditor extends JPanel try { _object.changeAttribute(_field.getName(), value); } catch (ObjectAccessException oae) { - Log.warning("Failed to update field " + _field.getName() + + log.warning("Failed to update field " + _field.getName() + ": "+ oae); } } @@ -128,7 +128,7 @@ public abstract class FieldEditor extends JPanel try { dvalue = getDisplayValue(); } catch (Exception e) { - Log.warning("Failed to parse display value " + e + "."); + log.warning("Failed to parse display value " + e + "."); displayValue(getValue()); } updateBorder(!ObjectUtil.equals(dvalue, getValue())); @@ -154,7 +154,7 @@ public abstract class FieldEditor extends JPanel try { return _field.get(_object); } catch (Exception e) { - Log.warning("Failed to fetch field [field=" + _field + + log.warning("Failed to fetch field [field=" + _field + ", object=" + _object + ", error=" + e + "]."); return null; } diff --git a/src/java/com/threerings/admin/client/ObjectEditorPanel.java b/src/java/com/threerings/admin/client/ObjectEditorPanel.java index 7810b7b3f..419d1b56a 100644 --- a/src/java/com/threerings/admin/client/ObjectEditorPanel.java +++ b/src/java/com/threerings/admin/client/ObjectEditorPanel.java @@ -37,9 +37,10 @@ import com.threerings.presents.dobj.Subscriber; import com.threerings.presents.util.PresentsContext; import com.threerings.presents.util.SafeSubscriber; -import com.threerings.admin.Log; import com.threerings.admin.data.ConfigObject; +import static com.threerings.admin.Log.log; + /** * Used to edit the distributed object fields of a particular * configuration object. When the panel is first shown, it will subscribe @@ -111,7 +112,7 @@ public class ObjectEditorPanel extends ScrollablePanel } } catch (SecurityException se) { - Log.warning("Unable to introspect DObject!? " + se); + log.warning("Unable to introspect DObject!? " + se); } SwingUtil.refresh(this); @@ -120,7 +121,7 @@ public class ObjectEditorPanel extends ScrollablePanel // documentation inherited from interface public void requestFailed (int oid, ObjectAccessException cause) { - Log.warning("Unable to subscribe to config object: " + cause); + log.warning("Unable to subscribe to config object: " + cause); } protected PresentsContext _ctx; diff --git a/src/java/com/threerings/admin/client/PulldownFieldEditor.java b/src/java/com/threerings/admin/client/PulldownFieldEditor.java index 882517976..37eddfe08 100644 --- a/src/java/com/threerings/admin/client/PulldownFieldEditor.java +++ b/src/java/com/threerings/admin/client/PulldownFieldEditor.java @@ -30,7 +30,7 @@ import com.samskivert.util.ObjectUtil; import com.threerings.presents.dobj.DObject; import com.threerings.presents.util.PresentsContext; -import com.threerings.admin.Log; +import static com.threerings.admin.Log.log; /** * Allows editing of a dobj field using a pulldown. @@ -132,7 +132,7 @@ public class PulldownFieldEditor extends FieldEditor } // cause shit to blow up minorly - Log.warning("Value in dobj is not settable, disabling choice."); + log.warning("Value in dobj is not settable, disabling choice."); Thread.dumpStack(); _value.setEnabled(false); } diff --git a/src/java/com/threerings/admin/server/ConfigRegistry.java b/src/java/com/threerings/admin/server/ConfigRegistry.java index b5f8faeb0..80ffee23d 100644 --- a/src/java/com/threerings/admin/server/ConfigRegistry.java +++ b/src/java/com/threerings/admin/server/ConfigRegistry.java @@ -30,7 +30,6 @@ import java.util.HashMap; import com.samskivert.io.ByteArrayOutInputStream; import com.samskivert.util.StringUtil; -import com.threerings.admin.Log; import com.threerings.io.ObjectInputStream; import com.threerings.io.ObjectOutputStream; import com.threerings.io.Streamable; @@ -47,6 +46,8 @@ import com.threerings.presents.dobj.EntryUpdatedEvent; import com.threerings.presents.dobj.ObjectAccessException; import com.threerings.presents.dobj.SetListener; +import static com.threerings.admin.Log.log; + /** * Provides a registry of configuration distributed objects. Using distributed object to store * runtime configuration data can be exceptionally useful in that clients (with admin privileges) @@ -166,7 +167,7 @@ public abstract class ConfigRegistry object.addListener(this); } catch (SecurityException se) { - Log.warning("Unable to reflect on " + cclass.getName() + ": " + se + ". " + + log.warning("Unable to reflect on " + cclass.getName() + ": " + se + ". " + "Refusing to monitor object."); } } @@ -196,7 +197,7 @@ public abstract class ConfigRegistry try { value = object.getAttribute(event.getName()); } catch (ObjectAccessException oae) { - Log.warning("Exception getting field [name=" + event.getName() + + log.warning("Exception getting field [name=" + event.getName() + ", exception=" + oae + "]."); return; } @@ -239,7 +240,7 @@ public abstract class ConfigRegistry } else if (value instanceof long[]) { setValue(key, (long[]) value); } else { - Log.info("Unable to flush config obj change [cobj=" + object.getClass().getName() + + log.info("Unable to flush config obj change [cobj=" + object.getClass().getName() + ", key=" + key + ", type=" + value.getClass().getName() + ", value=" + value + "]."); } @@ -314,18 +315,18 @@ public abstract class ConfigRegistry serialize(key, nameToKey(key), deserializedValue); } } catch (Exception e) { - Log.warning("Failure decoding config value [type=" + type + + log.warning("Failure decoding config value [type=" + type + ", field=" + field + ", exception=" + e + "]."); } } else { - Log.warning("Can't init field of unknown type " + + log.warning("Can't init field of unknown type " + "[cobj=" + object.getClass().getName() + ", key=" + key + ", type=" + type.getName() + "]."); } } catch (IllegalAccessException iae) { - Log.warning("Can't set field [cobj=" + object.getClass().getName() + + log.warning("Can't set field [cobj=" + object.getClass().getName() + ", key=" + key + ", error=" + iae + "]."); } } @@ -340,7 +341,7 @@ public abstract class ConfigRegistry try { value = object.getAttribute(attributeName); } catch (ObjectAccessException oae) { - Log.warning("Exception getting field [name=" + attributeName + + log.warning("Exception getting field [name=" + attributeName + ", error=" + oae + "]."); return; } @@ -348,7 +349,7 @@ public abstract class ConfigRegistry if (value instanceof Streamable) { serialize(attributeName, key, value); } else { - Log.info("Unable to flush config obj change [cobj=" + object.getClass().getName() + + log.info("Unable to flush config obj change [cobj=" + object.getClass().getName() + ", key=" + key + ", type=" + value.getClass().getName() + ", value=" + value + "]."); } @@ -366,7 +367,7 @@ public abstract class ConfigRegistry oout.flush(); setValue(key, StringUtil.hexlate(out.toByteArray())); } catch (IOException ioe) { - Log.info("Error serializing value " + value); + log.info("Error serializing value " + value); } } diff --git a/src/java/com/threerings/admin/server/DatabaseConfigRegistry.java b/src/java/com/threerings/admin/server/DatabaseConfigRegistry.java index 0b6dc8eb0..071fccb75 100644 --- a/src/java/com/threerings/admin/server/DatabaseConfigRegistry.java +++ b/src/java/com/threerings/admin/server/DatabaseConfigRegistry.java @@ -31,9 +31,10 @@ import com.samskivert.util.StringUtil; import com.threerings.presents.dobj.DObject; -import com.threerings.admin.Log; import com.threerings.admin.server.persist.ConfigRepository; +import static com.threerings.admin.Log.log; + /** * Implements the {@link ConfigRegistry} using a JDBC database as a persistent store for the * configuration information. Note: config objects should only be created during server @@ -130,8 +131,7 @@ public class DatabaseConfigRegistry extends ConfigRegistry try { _data = _repo.loadConfig(_node, _path); } catch (PersistenceException pe) { - Log.warning("Failed to load object configuration [path=" + _path + "]."); - Log.logStackTrace(pe); + log.warning("Failed to load object configuration [path=" + _path + "].", pe); _data = new HashMap(); } diff --git a/src/java/com/threerings/admin/server/PeeredDatabaseConfigRegistry.java b/src/java/com/threerings/admin/server/PeeredDatabaseConfigRegistry.java index 6e33bfffc..18c60caa9 100644 --- a/src/java/com/threerings/admin/server/PeeredDatabaseConfigRegistry.java +++ b/src/java/com/threerings/admin/server/PeeredDatabaseConfigRegistry.java @@ -22,7 +22,6 @@ package com.threerings.admin.server; import java.util.ArrayList; -import java.util.logging.Level; import com.samskivert.io.PersistenceException; import com.samskivert.jdbc.depot.PersistenceContext; @@ -79,7 +78,7 @@ public class PeeredDatabaseConfigRegistry extends DatabaseConfigRegistry object.changeAttribute(change.left, change.right); _pendingSyncs.add(change.left); } catch (Exception e) { - log.log(Level.WARNING, "Config attribute sync failed " + change + ".", e); + log.warning("Config attribute sync failed " + change + ".", e); } } diff --git a/src/java/com/threerings/bureau/Log.java b/src/java/com/threerings/bureau/Log.java index befeebc7b..873146b3f 100644 --- a/src/java/com/threerings/bureau/Log.java +++ b/src/java/com/threerings/bureau/Log.java @@ -21,8 +21,7 @@ package com.threerings.bureau; -import java.util.logging.Level; -import java.util.logging.Logger; +import com.samskivert.util.Logger; /** * Contains a reference to the log object used by the Bureau services. @@ -30,29 +29,5 @@ import java.util.logging.Logger; public class Log { /** We dispatch our log messages through this logger. */ - public static Logger log = Logger.getLogger("com.threerings.narya.bureau"); - - /** Convenience function. */ - public static void debug (String message) - { - log.fine(message); - } - - /** Convenience function. */ - public static void info (String message) - { - log.info(message); - } - - /** Convenience function. */ - public static void warning (String message) - { - log.warning(message); - } - - /** Convenience function. */ - public static void logStackTrace (Throwable t) - { - log.log(Level.WARNING, t.getMessage(), t); - } + public static Logger log = Logger.getLogger("com.threerings.bureau"); } diff --git a/src/java/com/threerings/bureau/client/BureauDirector.java b/src/java/com/threerings/bureau/client/BureauDirector.java index e098adc37..b1b85a680 100644 --- a/src/java/com/threerings/bureau/client/BureauDirector.java +++ b/src/java/com/threerings/bureau/client/BureauDirector.java @@ -5,13 +5,14 @@ import com.threerings.bureau.data.BureauCodes; import com.samskivert.util.IntMap; import com.samskivert.util.IntMaps; import com.threerings.bureau.data.AgentObject; -import com.threerings.bureau.Log; import com.threerings.bureau.util.BureauContext; import com.threerings.presents.client.Client; import com.threerings.presents.dobj.Subscriber; import com.threerings.presents.util.SafeSubscriber; import com.threerings.presents.dobj.ObjectAccessException; +import static com.threerings.bureau.Log.log; + /** * Allows the server to create and destroy agents on a client. * @see BureauRegistry @@ -48,7 +49,7 @@ public abstract class BureauDirector extends BasicDirector } }; - Log.info("Subscribing to object " + agentId); + log.info("Subscribing to object " + agentId); SafeSubscriber subscriber = new SafeSubscriber(agentId, delegator); @@ -65,19 +66,18 @@ public abstract class BureauDirector extends BasicDirector agent = _agents.remove(agentId); if (agent == null) { - Log.warning("Lost an agent, id " + agentId); + log.warning("Lost an agent, id " + agentId); } else { try { agent.stop(); } catch (Throwable t) { - Log.warning("Stopping an agent caused an exception"); - Log.logStackTrace(t); + log.warning("Stopping an agent caused an exception", t); } SafeSubscriber subscriber = _subscribers.remove(agentId); if (subscriber == null) { - Log.warning("Lost a subscriber for agent " + agent); + log.warning("Lost a subscriber for agent " + agent); } else { subscriber.unsubscribe(_ctx.getDObjectManager()); @@ -93,7 +93,7 @@ public abstract class BureauDirector extends BasicDirector { int oid = agentObject.getOid(); - Log.info("Object " + oid + " now available"); + log.info("Object " + oid + " now available"); Agent agent; try { @@ -102,8 +102,7 @@ public abstract class BureauDirector extends BasicDirector agent.start(); } catch (Throwable t) { - Log.warning("Could not create agent [obj=" + agentObject + "]"); - Log.logStackTrace(t); + log.warning("Could not create agent [obj=" + agentObject + "]", t); _bureauService.agentCreationFailed(_ctx.getClient(), oid); return; } @@ -117,8 +116,7 @@ public abstract class BureauDirector extends BasicDirector */ protected synchronized void requestFailed (int oid, ObjectAccessException cause) { - Log.warning("Could not subscribe to agent [oid=" + oid + "]"); - Log.logStackTrace(cause); + log.warning("Could not subscribe to agent [oid=" + oid + "]", cause); } @Override // from BasicDirector diff --git a/src/java/com/threerings/bureau/server/BureauRegistry.java b/src/java/com/threerings/bureau/server/BureauRegistry.java index 8e7e4bbf2..b47901877 100644 --- a/src/java/com/threerings/bureau/server/BureauRegistry.java +++ b/src/java/com/threerings/bureau/server/BureauRegistry.java @@ -35,34 +35,35 @@ import com.samskivert.util.Invoker; import com.samskivert.util.ProcessLogger; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.threerings.bureau.Log; -/** - * Abstracts the launching and termination of external processes (bureaus) that host instances of +import static com.threerings.bureau.Log.log; + +/** + * Abstracts the launching and termination of external processes (bureaus) that host instances of * server-side code (agents). */ -public class BureauRegistry +public class BureauRegistry { /** * Defines the commands that are responsible for invoking a bureau. Instances are associated to - * bureau types by the server on startup. The instances are used whenever the registry needs to + * bureau types by the server on startup. The instances are used whenever the registry needs to * launch a bureau for an agent with the assocated bureau type. * @see setCommandGenerator */ public static interface CommandGenerator { - /** - * Launches a new bureau using the given server connect-back url and other information. + /** + * Launches a new bureau using the given server connect-back url and other information. * Called by the registry when it decides a new bureau is needed. - * @param serverNameAndPort the name and port the bureau should use to connect back to the + * @param serverNameAndPort the name and port the bureau should use to connect back to the * server, e.g. server.com:47624 * @param bureauId the id of the bureau being launched * @param token the token string to use for the credentials when logging in * @return the builder, ready to launch */ String[] createCommand ( - String serverNameAndPort, - String bureauId, + String serverNameAndPort, + String bureauId, String token); } @@ -70,8 +71,8 @@ public class BureauRegistry * Creates a new registry, prepared to provide bureau services. */ public BureauRegistry ( - String serverNameAndPort, - InvocationManager invmgr, + String serverNameAndPort, + InvocationManager invmgr, RootDObjectManager omgr, Invoker invoker) { @@ -96,13 +97,13 @@ public class BureauRegistry }; _invmgr.registerDispatcher( - new BureauDispatcher(provider), + new BureauDispatcher(provider), BureauCodes.BUREAU_GROUP); } /** - * Registers a command generator for a given type. When an agent is started and no bureaus are - * running, the bureauType is used to determine the CommandGenerator + * Registers a command generator for a given type. When an agent is started and no bureaus are + * running, the bureauType is used to determine the CommandGenerator * instance to call. * @param bureauType the type of bureau that will be launched * @param cmdGenerator the generator to be used for bureaus of bureauType @@ -110,7 +111,7 @@ public class BureauRegistry public void setCommandGenerator (String bureauType, CommandGenerator cmdGenerator) { if (_generators.get(bureauType) != null) { - Log.warning("Generator for type already exists [type=" + + log.warning("Generator for type already exists [type=" + bureauType + "]"); return; } @@ -118,7 +119,7 @@ public class BureauRegistry _generators.put(bureauType, cmdGenerator); } - /** + /** * Starts a new agent using the data in the given object, creating a new bureau if necessary. */ public void startAgent (AgentObject agent) @@ -128,7 +129,7 @@ public class BureauRegistry _omgr.registerObject(agent); - Log.info("Bureau ready, sending createAgent " + + log.info("Bureau ready, sending createAgent " + StringUtil.toString(agent)); BureauSender.createAgent(bureau.clientObj, agent.getOid()); @@ -143,12 +144,12 @@ public class BureauRegistry CommandGenerator generator = _generators.get(agent.bureauType); if (generator == null) { - Log.warning("CommandGenerator not found for agent's " + + log.warning("CommandGenerator not found for agent's " + "bureau type " + StringUtil.toString(agent)); return; } - Log.info("Creating new bureau " + + log.info("Creating new bureau " + StringUtil.toString(agent.bureauId) + " " + StringUtil.toString(generator)); @@ -161,7 +162,7 @@ public class BureauRegistry _serverNameAndPort, agent.bureauId, "")); bureau.builder.redirectErrorStream(true); - + _invoker.postUnit(new Launcher(bureau)); _bureaus.put(agent.bureauId, bureau); @@ -170,13 +171,13 @@ public class BureauRegistry _omgr.registerObject(agent); bureau.agentStates.put(agent, Bureau.PENDING); - Log.info("Bureau not ready, pending agent " + + log.info("Bureau not ready, pending agent " + StringUtil.toString(agent)); - + bureau.summarize(); } - /** + /** * Destroys a previously started agent using the data in the given object. */ public void destroyAgent (AgentObject agent) @@ -187,7 +188,7 @@ public class BureauRegistry return; } - Log.info("Destroying agent " + StringUtil.toString(agent)); + log.info("Destroying agent " + StringUtil.toString(agent)); // transition the agent to a new state and perform the effect of the transition switch (found.state) { @@ -209,8 +210,8 @@ public class BureauRegistry case Bureau.DESTROYED: case Bureau.STILL_BORN: - Log.warning("Acknowledging a request to destory an agent, but agent " + - "is in state " + found.state + ", ignoring request " + + log.warning("Acknowledging a request to destory an agent, but agent " + + "is in state " + found.state + ", ignoring request " + StringUtil.toString(found.agent)); break; } @@ -219,14 +220,14 @@ public class BureauRegistry } /** - * Callback for when the bureau client acknowledges starting up. Starts all pending agents and + * Callback for when the bureau client acknowledges starting up. Starts all pending agents and * causes subsequent agent start requests to be sent directly to the bureau. */ protected void bureauInitialized (ClientObject client, String bureauId) { final Bureau bureau = _bureaus.get(bureauId); if (bureau == null) { - Log.warning("Acknowledging initialization of non-existent bureau " + + log.warning("Acknowledging initialization of non-existent bureau " + StringUtil.toString(bureauId)); return; } @@ -239,13 +240,13 @@ public class BureauRegistry } }); - Log.info("Bureau created " + StringUtil.toString(bureau) + + log.info("Bureau created " + StringUtil.toString(bureau) + ", launching pending agents"); // find all pending agents Set pending = Sets.newHashSet(); - for (Map.Entry entry : + for (Map.Entry entry : bureau.agentStates.entrySet()) { if (entry.getValue() == Bureau.PENDING) { @@ -255,7 +256,7 @@ public class BureauRegistry // create them for (AgentObject agent : pending) { - Log.info("Creating agent " + StringUtil.toString(agent)); + log.info("Creating agent " + StringUtil.toString(agent)); BureauSender.createAgent(bureau.clientObj, agent.getOid()); bureau.agentStates.put(agent, Bureau.STARTED); } @@ -273,7 +274,7 @@ public class BureauRegistry return; } - Log.info("Agent creation confirmed " + StringUtil.toString(found.agent)); + log.info("Agent creation confirmed " + StringUtil.toString(found.agent)); switch (found.state) { case Bureau.STARTED: @@ -288,7 +289,7 @@ public class BureauRegistry case Bureau.PENDING: case Bureau.RUNNING: case Bureau.DESTROYED: - Log.warning("Received acknowledgement of the creation of an " + + log.warning("Received acknowledgement of the creation of an " + "agent in state " + found.state + ", ignoring request " + StringUtil.toString(found.agent)); break; @@ -307,7 +308,7 @@ public class BureauRegistry return; } - Log.info("Agent creation failed " + StringUtil.toString(found.agent)); + log.info("Agent creation failed " + StringUtil.toString(found.agent)); switch (found.state) { case Bureau.STARTED: @@ -318,7 +319,7 @@ public class BureauRegistry case Bureau.PENDING: case Bureau.RUNNING: case Bureau.DESTROYED: - Log.warning("Received acknowledgement of creation failure for " + + log.warning("Received acknowledgement of creation failure for " + "agent in state " + found.state + ", ignoring request " + StringUtil.toString(found.agent)); break; @@ -336,8 +337,8 @@ public class BureauRegistry if (found == null) { return; } - - Log.info("Agent destruction confirmed " + StringUtil.toString(found.agent)); + + log.info("Agent destruction confirmed " + StringUtil.toString(found.agent)); switch (found.state) { case Bureau.DESTROYED: @@ -348,8 +349,8 @@ public class BureauRegistry case Bureau.STARTED: case Bureau.RUNNING: case Bureau.STILL_BORN: - Log.warning("Acknowledging agent destruction, but state is " + - found.state + ", ignoring request " + + log.warning("Acknowledging agent destruction, but state is " + + found.state + ", ignoring request " + StringUtil.toString(found.agent)); break; } @@ -357,12 +358,12 @@ public class BureauRegistry found.bureau.summarize(); } - /** + /** * Callback for when a client is destroyed. */ protected void clientDestroyed (Bureau bureau) { - Log.info("Client destroyed, destroying all agents " + + log.info("Client destroyed, destroying all agents " + StringUtil.toString(bureau)); // clean up any agents attached to this bureau @@ -378,13 +379,13 @@ public class BureauRegistry { com.threerings.presents.dobj.DObject dobj = _omgr.getObject(agentId); if (dobj == null) { - Log.warning("Non-existent agent in " + resolver + + log.warning("Non-existent agent in " + resolver + " [agentId=" + agentId + "]"); return null; } if (!(dobj instanceof AgentObject)) { - Log.warning("Object not an agent in " + resolver + + log.warning("Object not an agent in " + resolver + " " + StringUtil.toString(dobj)); return null; } @@ -392,20 +393,20 @@ public class BureauRegistry AgentObject agent = (AgentObject)dobj; Bureau bureau = _bureaus.get(agent.bureauId); if (bureau == null) { - Log.warning("Bureau not found for agent in " + resolver + + log.warning("Bureau not found for agent in " + resolver + " " + StringUtil.toString(agent)); return null; } if (!bureau.agentStates.containsKey(agent)) { - Log.warning("Bureau does not have agent in " + resolver + + log.warning("Bureau does not have agent in " + resolver + " " + StringUtil.toString(agent)); return null; } if (client != null && bureau.clientObj != client) { - Log.warning("Masquerading request in " + resolver + - " " + StringUtil.toString(agent) + + log.warning("Masquerading request in " + resolver + + " " + StringUtil.toString(agent) + " " + StringUtil.toString(bureau.clientObj) + " " + StringUtil.toString(client)); return null; @@ -421,7 +422,7 @@ public class BureauRegistry { Launcher (Bureau bureau) { - super("Launcher for " + bureau + + super("Launcher for " + bureau + StringUtil.toString(bureau.builder.command())); _bureau = bureau; } @@ -430,26 +431,20 @@ public class BureauRegistry { try { _result = _bureau.builder.start(); - // log the output of the process and prefix with bureau id - ProcessLogger.copyMergedOutput( - Log.log, _bureau.bureauId, _result); - } - catch (Exception e) { - Log.warning("Could not launch process for bureau " + - StringUtil.toString(_bureau)); - Log.logStackTrace(e); - } + ProcessLogger.copyMergedOutput(log, _bureau.bureauId, _result); + } catch (Exception e) { + log.warning("Could not launch process", "bureau", _bureau, e); + } return true; } - + public void handleResult () { _bureau.process = _result; _bureau.builder = null; - Log.info("Bureau launched " + - StringUtil.toString(_bureau)); + log.info("Bureau launched", "bureau", _bureau); } protected Bureau _bureau; @@ -460,8 +455,8 @@ public class BureauRegistry protected static class FoundAgent { FoundAgent ( - Bureau bureau, - AgentObject agent, + Bureau bureau, + AgentObject agent, int state) { this.bureau = bureau; @@ -493,7 +488,7 @@ public class BureauRegistry // Agent ack'ed, now live and hosting, ready to tell other clients static final int RUNNING = 2; - // Agent destruction requested, waiting for acknowledge (after which the agent is removed + // Agent destruction requested, waiting for acknowledge (after which the agent is removed // from the Bureau, so has no state) static final int DESTROYED = 3; @@ -512,7 +507,7 @@ public class BureauRegistry // with this id should be associated with one instance String bureauId; - // The client object of the bureau that has opened a dobj connection to + // The client object of the bureau that has opened a dobj connection to // the registry ClientObject clientObj; @@ -560,7 +555,7 @@ public class BureauRegistry StringBuilder str = new StringBuilder(); str.append("Bureau ").append(bureauId).append(" ["); agentSummary(str).append("]"); - Log.info(str.toString()); + log.info(str.toString()); } } diff --git a/src/java/com/threerings/crowd/Log.java b/src/java/com/threerings/crowd/Log.java index 6586038b8..4b3f110a2 100644 --- a/src/java/com/threerings/crowd/Log.java +++ b/src/java/com/threerings/crowd/Log.java @@ -21,8 +21,7 @@ package com.threerings.crowd; -import java.util.logging.Level; -import java.util.logging.Logger; +import com.samskivert.util.Logger; /** * Contains a reference to the log object used by the Crowd services. @@ -30,30 +29,5 @@ import java.util.logging.Logger; public class Log { /** We dispatch our log messages through this logger. */ - public static Logger log = - Logger.getLogger("com.threerings.narya.crowd"); - - /** Convenience function. */ - public static void debug (String message) - { - log.fine(message); - } - - /** Convenience function. */ - public static void info (String message) - { - log.info(message); - } - - /** Convenience function. */ - public static void warning (String message) - { - log.warning(message); - } - - /** Convenience function. */ - public static void logStackTrace (Throwable t) - { - log.log(Level.WARNING, t.getMessage(), t); - } + public static Logger log = Logger.getLogger("com.threerings.crowd"); } diff --git a/src/java/com/threerings/crowd/chat/client/ChatDirector.java b/src/java/com/threerings/crowd/chat/client/ChatDirector.java index 17bef4366..7ba8621ca 100644 --- a/src/java/com/threerings/crowd/chat/client/ChatDirector.java +++ b/src/java/com/threerings/crowd/chat/client/ChatDirector.java @@ -49,7 +49,6 @@ import com.threerings.util.MessageManager; import com.threerings.util.Name; import com.threerings.util.TimeUtil; -import com.threerings.crowd.Log; import com.threerings.crowd.client.LocationObserver; import com.threerings.crowd.data.BodyObject; import com.threerings.crowd.data.CrowdCodes; @@ -63,6 +62,8 @@ import com.threerings.crowd.chat.data.TellFeedbackMessage; import com.threerings.crowd.chat.data.UserMessage; import com.threerings.crowd.chat.data.UserSystemMessage; +import static com.threerings.crowd.Log.log; + /** * The chat director is the client side coordinator of all chat related services. It handles both * place constrained chat as well as direct messaging. @@ -148,7 +149,7 @@ public class ChatDirector extends BasicDirector // register our default chat handlers if (_bundle == null || _msgmgr == null) { - Log.warning("Null bundle or message manager given to ChatDirector"); + log.warning("Null bundle or message manager given to ChatDirector"); return; } registerCommandHandlers(); @@ -1001,7 +1002,7 @@ public class ChatDirector extends BasicDirector if (bundle != null && _msgmgr != null) { MessageBundle msgb = _msgmgr.getBundle(bundle); if (msgb == null) { - Log.warning("No message bundle available to translate message " + + log.warning("No message bundle available to translate message " + "[bundle=" + bundle + ", message=" + message + "]."); } else { message = msgb.xlate(message); diff --git a/src/java/com/threerings/crowd/chat/client/CurseFilter.java b/src/java/com/threerings/crowd/chat/client/CurseFilter.java index 36f102edf..a57a9bb24 100644 --- a/src/java/com/threerings/crowd/chat/client/CurseFilter.java +++ b/src/java/com/threerings/crowd/chat/client/CurseFilter.java @@ -30,7 +30,7 @@ import com.samskivert.util.StringUtil; import com.threerings.util.Name; -import com.threerings.crowd.Log; +import static com.threerings.crowd.Log.log; /** * A chat filter that can filter out curse words from user chat. @@ -150,7 +150,7 @@ public abstract class CurseFilter implements ChatFilter String mapping = st.nextToken(); StringTokenizer st2 = new StringTokenizer(mapping, "="); if (st2.countTokens() != 2) { - Log.warning("Something looks wrong in the x.cursewords " + + log.warning("Something looks wrong in the x.cursewords " + "properties (" + mapping + "), skipping."); continue; } diff --git a/src/java/com/threerings/crowd/chat/server/SpeakHandler.java b/src/java/com/threerings/crowd/chat/server/SpeakHandler.java index 095194371..d1b47af18 100644 --- a/src/java/com/threerings/crowd/chat/server/SpeakHandler.java +++ b/src/java/com/threerings/crowd/chat/server/SpeakHandler.java @@ -27,10 +27,11 @@ import com.threerings.presents.data.ClientObject; import com.threerings.presents.dobj.DObject; import com.threerings.presents.server.InvocationManager; -import com.threerings.crowd.Log; import com.threerings.crowd.chat.data.ChatCodes; import com.threerings.crowd.data.BodyObject; +import static com.threerings.crowd.Log.log; + /** * Wires up the {@link SpeakService} to a particular distributed object. A server entity can make * "speech" available among the subscribers of a particular distributed object by constructing a @@ -86,7 +87,7 @@ public class SpeakHandler // ensure that the speaker is valid if ((mode == ChatCodes.BROADCAST_MODE) || (_validator != null && !_validator.isValidSpeaker(_speakObj, caller, mode))) { - Log.warning("Refusing invalid speak request [caller=" + caller.who() + + log.warning("Refusing invalid speak request [caller=" + caller.who() + ", speakObj=" + _speakObj.which() + ", message=" + message + ", mode=" + mode + "]."); diff --git a/src/java/com/threerings/crowd/chat/server/SpeakUtil.java b/src/java/com/threerings/crowd/chat/server/SpeakUtil.java index 518948ca6..0dba95774 100644 --- a/src/java/com/threerings/crowd/chat/server/SpeakUtil.java +++ b/src/java/com/threerings/crowd/chat/server/SpeakUtil.java @@ -31,7 +31,6 @@ import com.threerings.presents.data.ClientObject; import com.threerings.presents.dobj.DObject; import com.threerings.presents.server.InvocationProvider; -import com.threerings.crowd.Log; import com.threerings.crowd.data.BodyObject; import com.threerings.crowd.server.CrowdServer; @@ -42,6 +41,8 @@ import com.threerings.crowd.chat.data.SpeakObject; import com.threerings.crowd.chat.data.SystemMessage; import com.threerings.crowd.chat.data.UserMessage; +import static com.threerings.crowd.Log.log; + /** * Provides the back-end of the chat speaking facilities. */ @@ -174,7 +175,7 @@ public class SpeakUtil public static void sendMessage (DObject speakObj, ChatMessage msg) { if (speakObj == null) { - Log.warning("Dropping speak message, no speak obj '" + msg + "'."); + log.warning("Dropping speak message, no speak obj '" + msg + "'."); Thread.dumpStack(); return; } @@ -192,7 +193,7 @@ public class SpeakUtil _messageMapper.message = null; } else { - Log.info("Unable to note listeners [dclass=" + speakObj.getClass() + + log.info("Unable to note listeners [dclass=" + speakObj.getClass() + ", msg=" + msg + "]."); } } diff --git a/src/java/com/threerings/crowd/client/LocationDirector.java b/src/java/com/threerings/crowd/client/LocationDirector.java index bb5eab1a3..dbeaae456 100644 --- a/src/java/com/threerings/crowd/client/LocationDirector.java +++ b/src/java/com/threerings/crowd/client/LocationDirector.java @@ -21,8 +21,6 @@ package com.threerings.crowd.client; -import java.util.logging.Level; - import com.samskivert.util.ObserverList; import com.samskivert.util.ObserverList.ObserverOp; import com.samskivert.util.ResultListener; @@ -262,7 +260,7 @@ public class LocationDirector extends BasicDirector try { _controller.mayLeavePlace(_plobj); } catch (Exception e) { - log.log(Level.WARNING, "Place controller choked in mayLeavePlace " + + log.warning("Place controller choked in mayLeavePlace " + "[plobj=" + _plobj + "].", e); } } @@ -324,7 +322,7 @@ public class LocationDirector extends BasicDirector _subber.subscribe(_ctx.getDObjectManager()); } catch (Exception e) { - log.log(Level.WARNING, "Failed to create place controller [config=" + config + "].", e); + log.warning("Failed to create place controller [config=" + config + "].", e); handleFailure(_placeId, LocationCodes.E_INTERNAL_ERROR); } } @@ -347,7 +345,7 @@ public class LocationDirector extends BasicDirector try { _controller.didLeavePlace(_plobj); } catch (Exception e) { - log.log(Level.WARNING, "Place controller choked in didLeavePlace " + + log.warning("Place controller choked in didLeavePlace " + "[plobj=" + _plobj + "].", e); } } @@ -461,7 +459,7 @@ public class LocationDirector extends BasicDirector try { _controller.willEnterPlace(_plobj); } catch (Exception e) { - log.log(Level.WARNING, "Controller choked in willEnterPlace " + + log.warning("Controller choked in willEnterPlace " + "[place=" + _plobj + "].", e); } } diff --git a/src/java/com/threerings/crowd/client/OccupantDirector.java b/src/java/com/threerings/crowd/client/OccupantDirector.java index b58c4652c..33f85eef2 100644 --- a/src/java/com/threerings/crowd/client/OccupantDirector.java +++ b/src/java/com/threerings/crowd/client/OccupantDirector.java @@ -33,11 +33,12 @@ import com.threerings.presents.dobj.EntryRemovedEvent; import com.threerings.presents.dobj.EntryUpdatedEvent; import com.threerings.presents.dobj.SetListener; -import com.threerings.crowd.Log; import com.threerings.crowd.data.OccupantInfo; import com.threerings.crowd.data.PlaceObject; import com.threerings.crowd.util.CrowdContext; +import static com.threerings.crowd.Log.log; + /** * The occupant director listens for occupants of places to enter and * exit, and dispatches notices to interested parties about these events. diff --git a/src/java/com/threerings/crowd/client/PlaceViewUtil.java b/src/java/com/threerings/crowd/client/PlaceViewUtil.java index 112463fc0..9b0b9d5b9 100644 --- a/src/java/com/threerings/crowd/client/PlaceViewUtil.java +++ b/src/java/com/threerings/crowd/client/PlaceViewUtil.java @@ -23,9 +23,10 @@ package com.threerings.crowd.client; import java.awt.Container; -import com.threerings.crowd.Log; import com.threerings.crowd.data.PlaceObject; +import static com.threerings.crowd.Log.log; + /** * Provides a mechanism for dispatching notifications to all user * interface elements in a hierarchy that implement the {@link PlaceView} @@ -51,9 +52,8 @@ public class PlaceViewUtil try { ((PlaceView)root).willEnterPlace(plobj); } catch (Exception e) { - Log.warning("Component choked on willEnterPlace() " + - "[component=" + root + ", plobj=" + plobj + "]."); - Log.logStackTrace(e); + log.warning("Component choked on willEnterPlace() " + + "[component=" + root + ", plobj=" + plobj + "].", e); } } @@ -84,9 +84,8 @@ public class PlaceViewUtil try { ((PlaceView)root).didLeavePlace(plobj); } catch (Exception e) { - Log.warning("Component choked on didLeavePlace() " + - "[component=" + root + ", plobj=" + plobj + "]."); - Log.logStackTrace(e); + log.warning("Component choked on didLeavePlace() " + + "[component=" + root + ", plobj=" + plobj + "].", e); } } diff --git a/src/java/com/threerings/crowd/data/PlaceConfig.java b/src/java/com/threerings/crowd/data/PlaceConfig.java index 83641c540..505534c34 100644 --- a/src/java/com/threerings/crowd/data/PlaceConfig.java +++ b/src/java/com/threerings/crowd/data/PlaceConfig.java @@ -26,9 +26,10 @@ import com.samskivert.util.StringUtil; import com.threerings.io.SimpleStreamableObject; import com.threerings.util.ActionScript; -import com.threerings.crowd.Log; import com.threerings.crowd.client.PlaceController; +import static com.threerings.crowd.Log.log; + /** * The place config class encapsulates the configuration information for a * particular type of place. The hierarchy of place config objects mimics @@ -67,14 +68,12 @@ public abstract class PlaceConfig extends SimpleStreamableObject "PlaceConfig.createController() must be overridden."); } - Log.warning("Providing backwards compatibility. PlaceConfig." + + log.warning("Providing backwards compatibility. PlaceConfig." + "createController() should be overridden directly."); try { return (PlaceController)cclass.newInstance(); } catch (Exception e) { - Log.warning("Failed to instantiate controller class '" + - cclass + "'."); - Log.logStackTrace(e); + log.warning("Failed to instantiate controller class '" + cclass + "'.", e); return null; } } diff --git a/src/java/com/threerings/crowd/data/PlaceObject.java b/src/java/com/threerings/crowd/data/PlaceObject.java index a8047d06b..c2e0aa595 100644 --- a/src/java/com/threerings/crowd/data/PlaceObject.java +++ b/src/java/com/threerings/crowd/data/PlaceObject.java @@ -31,10 +31,11 @@ import com.threerings.presents.dobj.DSet; import com.threerings.presents.dobj.OidList; import com.threerings.presents.dobj.ServerMessageEvent; -import com.threerings.crowd.Log; import com.threerings.crowd.chat.data.SpeakMarshaller; import com.threerings.crowd.chat.data.SpeakObject; +import static com.threerings.crowd.Log.log; + /** * A distributed object that contains information on a place that is occupied by bodies. This place * might be a chat room, a game room, an island in a massively multiplayer piratical universe, @@ -131,8 +132,7 @@ public class PlaceObject extends DObject } } } catch (Throwable t) { - Log.warning("PlaceObject.getOccupantInfo choked."); - Log.logStackTrace(t); + log.warning("PlaceObject.getOccupantInfo choked.", t); } return null; } diff --git a/src/java/com/threerings/crowd/server/BodyProvider.java b/src/java/com/threerings/crowd/server/BodyProvider.java index 7593b9820..98dea9a52 100644 --- a/src/java/com/threerings/crowd/server/BodyProvider.java +++ b/src/java/com/threerings/crowd/server/BodyProvider.java @@ -26,12 +26,13 @@ import com.threerings.presents.server.InvocationException; import com.threerings.presents.server.InvocationManager; import com.threerings.presents.server.InvocationProvider; -import com.threerings.crowd.Log; import com.threerings.crowd.data.BodyObject; import com.threerings.crowd.data.CrowdCodes; import com.threerings.crowd.data.OccupantInfo; import com.threerings.crowd.data.Place; +import static com.threerings.crowd.Log.log; + /** * Provides the server-side side of the body-related invocation services. */ @@ -76,7 +77,7 @@ public class BodyProvider } // update their status! - Log.debug("Setting user idle state [user=" + bobj.username + ", status=" + nstatus + "]."); + log.debug("Setting user idle state [user=" + bobj.username + ", status=" + nstatus + "]."); updateOccupantStatus(bobj, bobj.location, nstatus); } diff --git a/src/java/com/threerings/crowd/server/CrowdServer.java b/src/java/com/threerings/crowd/server/CrowdServer.java index 89c3bceb2..bd4f690a8 100644 --- a/src/java/com/threerings/crowd/server/CrowdServer.java +++ b/src/java/com/threerings/crowd/server/CrowdServer.java @@ -33,10 +33,11 @@ import com.threerings.presents.server.InvocationManager; import com.threerings.presents.server.PresentsClient; import com.threerings.presents.server.PresentsServer; -import com.threerings.crowd.Log; import com.threerings.crowd.chat.server.ChatProvider; import com.threerings.crowd.data.BodyObject; +import static com.threerings.crowd.Log.log; + /** * The crowd server extends the presents server by configuring it to use the * extensions provided by the crowd layer to support crowd services. @@ -143,8 +144,7 @@ public class CrowdServer extends PresentsServer server.init(); server.run(); } catch (Exception e) { - Log.warning("Unable to initialize server."); - Log.logStackTrace(e); + log.warning("Unable to initialize server.", e); } } diff --git a/src/java/com/threerings/crowd/server/LocationProvider.java b/src/java/com/threerings/crowd/server/LocationProvider.java index 311d2b58c..e91acd649 100644 --- a/src/java/com/threerings/crowd/server/LocationProvider.java +++ b/src/java/com/threerings/crowd/server/LocationProvider.java @@ -30,7 +30,6 @@ import com.threerings.presents.server.InvocationManager; import com.threerings.presents.server.InvocationProvider; import com.threerings.presents.server.PresentsClient; -import com.threerings.crowd.Log; import com.threerings.crowd.client.LocationService; import com.threerings.crowd.data.BodyObject; import com.threerings.crowd.data.LocationCodes; @@ -39,6 +38,8 @@ import com.threerings.crowd.data.PlaceConfig; import com.threerings.crowd.data.PlaceObject; import com.threerings.crowd.server.CrowdServer; +import static com.threerings.crowd.Log.log; + /** * This class provides the server end of the location services. */ @@ -96,7 +97,7 @@ public class LocationProvider // make sure the place in question actually exists PlaceManager pmgr = _plreg.getPlaceManager(placeOid); if (pmgr == null) { - Log.info("Requested to move to non-existent place [who=" + source.who() + + log.info("Requested to move to non-existent place [who=" + source.who() + ", placeOid=" + placeOid + "]."); throw new InvocationException(NO_SUCH_PLACE); } @@ -105,7 +106,7 @@ public class LocationProvider // because we don't need to update anything in distributed object world Place place = pmgr.getLocation(); if (place.equals(source.location)) { - Log.debug("Going along with client request to move to where they already are " + + log.debug("Going along with client request to move to where they already are " + "[source=" + source.who() + ", place=" + place + "]."); return pmgr.getConfig(); } @@ -196,12 +197,12 @@ public class LocationProvider } } else { - Log.info("Body's prior location no longer around? [boid=" + bodoid + + log.info("Body's prior location no longer around? [boid=" + bodoid + ", place=" + oldloc + "]."); } } catch (ClassCastException cce) { - Log.warning("Body claims to occupy non-PlaceObject!? [boid=" + bodoid + + log.warning("Body claims to occupy non-PlaceObject!? [boid=" + bodoid + ", place=" + oldloc + ", error=" + cce + "]."); } diff --git a/src/java/com/threerings/crowd/server/PlaceManager.java b/src/java/com/threerings/crowd/server/PlaceManager.java index d1351e407..651fcbfdc 100644 --- a/src/java/com/threerings/crowd/server/PlaceManager.java +++ b/src/java/com/threerings/crowd/server/PlaceManager.java @@ -24,7 +24,6 @@ package com.threerings.crowd.server; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.logging.Level; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -51,7 +50,6 @@ import com.threerings.presents.dobj.SetAdapter; import com.threerings.presents.server.InvocationManager; import com.threerings.presents.server.PresentsDObjectMgr; -import com.threerings.crowd.Log; import com.threerings.crowd.data.BodyObject; import com.threerings.crowd.data.OccupantInfo; import com.threerings.crowd.data.Place; @@ -62,6 +60,8 @@ import com.threerings.crowd.chat.data.SpeakMarshaller; import com.threerings.crowd.chat.server.SpeakDispatcher; import com.threerings.crowd.chat.server.SpeakHandler; +import static com.threerings.crowd.Log.log; + /** * The place manager is the server-side entity that handles all place-related interaction. It * subscribes to the place object and reacts to message and other events. Behavior specific to a @@ -309,9 +309,8 @@ public class PlaceManager return info; } catch (Exception e) { - Log.warning("Failure building occupant info [where=" + where() + - ", body=" + body + "]."); - Log.logStackTrace(e); + log.warning("Failure building occupant info [where=" + where() + + ", body=" + body + "].", e); return null; } } @@ -546,9 +545,7 @@ public class PlaceManager */ protected void bodyEntered (final int bodyOid) { - if (Log.log.getLevel() == Level.FINE) { - Log.debug("Body entered [where=" + where() + ", oid=" + bodyOid + "]."); - } + log.debug("Body entered", "where", where(), "oid", bodyOid); // let our delegates know what's up applyToDelegates(new DelegateOp() { @@ -566,9 +563,7 @@ public class PlaceManager */ protected void bodyLeft (final int bodyOid) { - if (Log.log.getLevel() == Level.FINE) { - Log.debug("Body left [where=" + where() + ", oid=" + bodyOid + "]."); - } + log.debug("Body left", "where", where(), "oid", bodyOid); // if their occupant info hasn't been removed (which may be the case if they logged off // rather than left via a MoveTo request), we need to get it on out of here @@ -643,7 +638,7 @@ public class PlaceManager if (idlePeriod > 0L && _shutdownInterval == null) { _shutdownInterval = new Interval((PresentsDObjectMgr)_omgr) { public void expired () { - Log.debug("Unloading idle place '" + where () + "'."); + log.debug("Unloading idle place '" + where () + "'."); shutdown(); } }; diff --git a/src/java/com/threerings/crowd/server/PlaceRegistry.java b/src/java/com/threerings/crowd/server/PlaceRegistry.java index acf6b27ae..42c22e5b9 100644 --- a/src/java/com/threerings/crowd/server/PlaceRegistry.java +++ b/src/java/com/threerings/crowd/server/PlaceRegistry.java @@ -30,12 +30,13 @@ import com.threerings.presents.dobj.RootDObjectManager; import com.threerings.presents.server.InvocationException; import com.threerings.presents.server.InvocationManager; -import com.threerings.crowd.Log; import com.threerings.crowd.data.CrowdCodes; import com.threerings.crowd.data.Place; import com.threerings.crowd.data.PlaceConfig; import com.threerings.crowd.data.PlaceObject; +import static com.threerings.crowd.Log.log; + /** * The place registry keeps track of all of the active places in the server. It should be used to * create new places and it will take care of instantiating and initializing a place manager to @@ -197,9 +198,8 @@ public class PlaceRegistry pmgr.init(this, _invmgr, _omgr, config); } catch (Exception e) { - Log.logStackTrace(e); - throw new InstantiationException( - "Error creating place manager [config=" + config + "]."); + log.warning(e); + throw new InstantiationException("Error creating PlaceManager for " + config); } // give the manager an opportunity to abort the whole process if it fails any permissions @@ -226,8 +226,7 @@ public class PlaceRegistry pmgr.startup(plobj); } catch (Exception e) { - Log.warning("Error starting place manager [obj=" + plobj + ", pmgr=" + pmgr + "]."); - Log.logStackTrace(e); + log.warning("Error starting place manager [obj=" + plobj + ", pmgr=" + pmgr + "].", e); } return pmgr; @@ -241,7 +240,7 @@ public class PlaceRegistry int ploid = pmgr.getPlaceObject().getOid(); // remove it from the table if (_pmgrs.remove(ploid) == null) { - Log.warning("Requested to unmap unmapped place manager [pmgr=" + pmgr + "]."); + log.warning("Requested to unmap unmapped place manager [pmgr=" + pmgr + "]."); // } else { // Log.info("Unmapped place manager [class=" + pmgr.getClass().getName() + diff --git a/src/java/com/threerings/io/Streamer.java b/src/java/com/threerings/io/Streamer.java index 994258cac..8c7757f08 100644 --- a/src/java/com/threerings/io/Streamer.java +++ b/src/java/com/threerings/io/Streamer.java @@ -35,7 +35,6 @@ import java.security.PrivilegedActionException; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; -import java.util.logging.Level; import com.samskivert.util.ClassUtil; import com.samskivert.util.StringUtil; diff --git a/src/java/com/threerings/presents/Log.java b/src/java/com/threerings/presents/Log.java index 3638af3ae..a445a53bc 100644 --- a/src/java/com/threerings/presents/Log.java +++ b/src/java/com/threerings/presents/Log.java @@ -21,8 +21,7 @@ package com.threerings.presents; -import java.util.logging.Level; -import java.util.logging.Logger; +import com.samskivert.util.Logger; /** * Contains a reference to the log object used by the Presents services. @@ -30,29 +29,5 @@ import java.util.logging.Logger; public class Log { /** We dispatch our log messages through this logger. */ - public static Logger log = Logger.getLogger("com.threerings.narya.presents"); - - /** Convenience function. */ - public static void debug (String message) - { - log.fine(message); - } - - /** Convenience function. */ - public static void info (String message) - { - log.info(message); - } - - /** Convenience function. */ - public static void warning (String message) - { - log.warning(message); - } - - /** Convenience function. */ - public static void logStackTrace (Throwable t) - { - log.log(Level.WARNING, t.getMessage(), t); - } + public static Logger log = Logger.getLogger("com.threerings.presents"); } diff --git a/src/java/com/threerings/presents/client/BlockingCommunicator.java b/src/java/com/threerings/presents/client/BlockingCommunicator.java index 7e7e38895..807bcca54 100644 --- a/src/java/com/threerings/presents/client/BlockingCommunicator.java +++ b/src/java/com/threerings/presents/client/BlockingCommunicator.java @@ -51,7 +51,6 @@ import com.threerings.io.ObjectOutputStream; import com.threerings.io.UnreliableObjectInputStream; import com.threerings.io.UnreliableObjectOutputStream; -import com.threerings.presents.Log; import com.threerings.presents.data.AuthCodes; import com.threerings.presents.dobj.DObjectManager; import com.threerings.presents.net.AuthRequest; @@ -65,6 +64,8 @@ import com.threerings.presents.net.Transport; import com.threerings.presents.net.UpstreamMessage; import com.threerings.presents.util.DatagramSequencer; +import static com.threerings.presents.Log.log; + /** * The client performs all network I/O on separate threads (one for reading and one for * writing). The communicator class encapsulates that functionality. @@ -193,7 +194,7 @@ public class BlockingCommunicator extends Communicator */ protected synchronized void logonSucceeded (AuthResponseData data) { - Log.debug("Logon succeeded: " + data); + log.debug("Logon succeeded: " + data); // create our distributed object manager _omgr = new ClientDObjectMgr(this, _client); @@ -224,8 +225,7 @@ public class BlockingCommunicator extends Communicator return; } - Log.info("Connection failed: " + ioe); - Log.logStackTrace(ioe); + log.info("Connection failed", ioe); // let the client know that things went south _client.notifyObservers(Client.CLIENT_CONNECTION_FAILED, ioe); @@ -245,7 +245,7 @@ public class BlockingCommunicator extends Communicator return; } - Log.debug("Connection closed."); + log.debug("Connection closed."); // now do the whole logoff thing logoff(); } @@ -267,7 +267,7 @@ public class BlockingCommunicator extends Communicator _client.cleanup(_logonError); } - Log.debug("Reader thread exited."); + log.debug("Reader thread exited."); } /** @@ -277,7 +277,7 @@ public class BlockingCommunicator extends Communicator { // clear out our writer reference _writer = null; - Log.debug("Writer thread exited."); + log.debug("Writer thread exited."); // let the client observers know that we're logged off _client.notifyObservers(Client.CLIENT_DID_LOGOFF, null); @@ -299,12 +299,12 @@ public class BlockingCommunicator extends Communicator protected void closeChannel () { if (_channel != null) { - Log.debug("Closing socket channel."); + log.debug("Closing socket channel."); try { _channel.close(); } catch (IOException ioe) { - Log.warning("Error closing failed socket: " + ioe); + log.warning("Error closing failed socket: " + ioe); } _channel = null; @@ -326,7 +326,7 @@ public class BlockingCommunicator extends Communicator closeDatagramChannel(); } - Log.debug("Datagram reader thread exited."); + log.debug("Datagram reader thread exited."); } /** @@ -336,7 +336,7 @@ public class BlockingCommunicator extends Communicator { // clear out our writer reference _datagramWriter = null; - Log.debug("Datagram writer thread exited."); + log.debug("Datagram writer thread exited."); closeDatagramChannel(); } @@ -350,17 +350,17 @@ public class BlockingCommunicator extends Communicator try { _selector.close(); } catch (IOException ioe) { - Log.warning("Error closing selector: " + ioe); + log.warning("Error closing selector: " + ioe); } _selector = null; } if (_datagramChannel != null) { - Log.debug("Closing datagram socket channel."); + log.debug("Closing datagram socket channel."); try { _datagramChannel.close(); } catch (IOException ioe) { - Log.warning("Error closing datagram socket: " + ioe); + log.warning("Error closing datagram socket: " + ioe); } _datagramChannel = null; @@ -377,7 +377,7 @@ public class BlockingCommunicator extends Communicator throws IOException { if (debugLogMessages()) { - Log.info("SEND " + msg); + log.info("SEND " + msg); } // first we write the message so that we can measure it's length @@ -389,11 +389,11 @@ public class BlockingCommunicator extends Communicator ByteBuffer buffer = _fout.frameAndReturnBuffer(); if (buffer.limit() > 4096) { String txt = StringUtil.truncate(String.valueOf(msg), 80, "..."); - Log.info("Whoa, writin' a big one [msg=" + txt + ", size=" + buffer.limit() + "]."); + log.info("Whoa, writin' a big one [msg=" + txt + ", size=" + buffer.limit() + "]."); } int wrote = _channel.write(buffer); if (wrote != buffer.limit()) { - Log.warning("Aiya! Couldn't write entire message [msg=" + msg + + log.warning("Aiya! Couldn't write entire message [msg=" + msg + ", size=" + buffer.limit() + ", wrote=" + wrote + "]."); // } else { // Log.info("Wrote " + wrote + " bytes."); @@ -425,7 +425,7 @@ public class BlockingCommunicator extends Communicator ByteBuffer buf = _bout.flip(); int size = buf.remaining(); if (size > Client.MAX_DATAGRAM_SIZE) { - Log.warning("Dropping oversized datagram [size=" + size + + log.warning("Dropping oversized datagram [size=" + size + ", msg=" + msg + "]."); return; } @@ -466,7 +466,7 @@ public class BlockingCommunicator extends Communicator try { DownstreamMessage msg = (DownstreamMessage)_oin.readObject(); if (debugLogMessages()) { - Log.info("RECEIVE " + msg); + log.info("RECEIVE " + msg); } return msg; @@ -496,7 +496,7 @@ public class BlockingCommunicator extends Communicator return null; // received out of order } if (debugLogMessages()) { - Log.info("DATAGRAM " + msg); + log.info("DATAGRAM " + msg); } return msg; @@ -521,7 +521,7 @@ public class BlockingCommunicator extends Communicator { // the default implementation just connects to the first port and does no cycling int port = _client.getPorts()[0]; - Log.info("Connecting [host=" + host + ", port=" + port + "]."); + log.info("Connecting [host=" + host + ", port=" + port + "]."); synchronized (BlockingCommunicator.this) { _channel = SocketChannel.open(new InetSocketAddress(host, port)); } @@ -554,8 +554,7 @@ public class BlockingCommunicator extends Communicator logon(); } catch (Exception e) { - Log.debug("Logon failed: " + e); - // Log.logStackTrace(e); + log.debug("Logon failed: " + e); // once we're shutdown we'll report this error _logonError = e; // terminate our communicator thread @@ -596,10 +595,10 @@ public class BlockingCommunicator extends Communicator sendMessage(req); // now wait for the auth response - Log.debug("Waiting for auth response."); + log.debug("Waiting for auth response."); AuthResponse rsp = (AuthResponse)receiveMessage(); AuthResponseData data = rsp.getData(); - Log.debug("Got auth response: " + data); + log.debug("Got auth response: " + data); // if the auth request failed, we want to let the communicator know by throwing a logon // exception @@ -627,7 +626,7 @@ public class BlockingCommunicator extends Communicator } catch (InterruptedIOException iioe) { // somebody set up us the bomb! we've been interrupted which means that we're being // shut down, so we just report it and return from iterate() like a good monkey - Log.debug("Reader thread woken up in time to die."); + log.debug("Reader thread woken up in time to die."); } catch (EOFException eofe) { // let the communicator know that our connection was closed @@ -642,14 +641,13 @@ public class BlockingCommunicator extends Communicator shutdown(); } catch (Exception e) { - Log.warning("Error processing message [msg=" + msg + ", error=" + e + "]."); + log.warning("Error processing message [msg=" + msg + ", error=" + e + "]."); } } protected void handleIterateFailure (Exception e) { - Log.warning("Uncaught exception it reader thread."); - Log.logStackTrace(e); + log.warning("Uncaught exception it reader thread.", e); } protected void didShutdown () @@ -702,8 +700,7 @@ public class BlockingCommunicator extends Communicator protected void handleIterateFailure (Exception e) { - Log.warning("Uncaught exception it writer thread."); - Log.logStackTrace(e); + log.warning("Uncaught exception it writer thread.", e); } protected void didShutdown () @@ -729,7 +726,7 @@ public class BlockingCommunicator extends Communicator try { connect(); } catch (IOException ioe) { - Log.warning("Failed to open datagram channel [error=" + ioe + "]."); + log.warning("Failed to open datagram channel [error=" + ioe + "]."); shutdown(); } } @@ -749,7 +746,7 @@ public class BlockingCommunicator extends Communicator try { _digest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException nsae) { - Log.warning("Missing MD5 algorithm."); + log.warning("Missing MD5 algorithm."); shutdown(); return; } @@ -785,14 +782,14 @@ public class BlockingCommunicator extends Communicator // check if we managed to establish a connection if (cport > 0) { - Log.info("Datagram connection established [port=" + cport + "]."); + log.info("Datagram connection established [port=" + cport + "]."); // start up the writer thread _datagramWriter = new DatagramWriter(); _datagramWriter.start(); } else { - Log.info("Failed to establish datagram connection."); + log.info("Failed to establish datagram connection."); shutdown(); } } @@ -835,20 +832,19 @@ public class BlockingCommunicator extends Communicator } catch (AsynchronousCloseException ace) { // somebody set up us the bomb! we've been interrupted which means that we're being // shut down, so we just report it and return from iterate() like a good monkey - Log.debug("Datagram reader thread woken up in time to die."); + log.debug("Datagram reader thread woken up in time to die."); } catch (IOException ioe) { - Log.warning("Error receiving datagram [error=" + ioe + "]."); + log.warning("Error receiving datagram [error=" + ioe + "]."); } catch (Exception e) { - Log.warning("Error processing message [msg=" + msg + ", error=" + e + "]."); + log.warning("Error processing message [msg=" + msg + ", error=" + e + "]."); } } protected void handleIterateFailure (Exception e) { - Log.warning("Uncaught exception in datagram reader thread."); - Log.logStackTrace(e); + log.warning("Uncaught exception in datagram reader thread.", e); } protected void didShutdown () @@ -886,14 +882,13 @@ public class BlockingCommunicator extends Communicator sendDatagram(msg); } catch (IOException ioe) { - Log.warning("Error sending datagram [error=" + ioe + "]."); + log.warning("Error sending datagram [error=" + ioe + "]."); } } protected void handleIterateFailure (Exception e) { - Log.warning("Uncaught exception in datagram writer thread."); - Log.logStackTrace(e); + log.warning("Uncaught exception in datagram writer thread.", e); } protected void didShutdown () diff --git a/src/java/com/threerings/presents/client/ClientCommunicator.java b/src/java/com/threerings/presents/client/ClientCommunicator.java index 35a59f815..1f9389f5e 100644 --- a/src/java/com/threerings/presents/client/ClientCommunicator.java +++ b/src/java/com/threerings/presents/client/ClientCommunicator.java @@ -32,9 +32,10 @@ import com.samskivert.swing.RuntimeAdjust; import com.samskivert.util.IntListUtil; import com.samskivert.util.Interval; -import com.threerings.presents.Log; import com.threerings.presents.data.AuthCodes; +import static com.threerings.presents.Log.log; + /** * Customizes the blocking communicator with some things that we only do on users' machines (where * there's only one client running, not potentially dozens, and where we're not sending high @@ -78,7 +79,7 @@ public class ClientCommunicator extends BlockingCommunicator for (int ii = 0; ii < ports.length; ii++) { int port = ports[(ii+ppidx)%ports.length]; int nextPort = ports[(ii+ppidx+1)%ports.length]; - Log.info("Connecting [host=" + host + ", port=" + port + "]."); + log.info("Connecting [host=" + host + ", port=" + port + "]."); InetSocketAddress addr = new InetSocketAddress(host, port); try { synchronized (this) { diff --git a/src/java/com/threerings/presents/client/ClientDObjectMgr.java b/src/java/com/threerings/presents/client/ClientDObjectMgr.java index 3fb042b4d..352f4d575 100644 --- a/src/java/com/threerings/presents/client/ClientDObjectMgr.java +++ b/src/java/com/threerings/presents/client/ClientDObjectMgr.java @@ -35,10 +35,11 @@ import com.samskivert.util.StringUtil; import com.samskivert.util.IntMap; import com.samskivert.util.Interval; -import com.threerings.presents.Log; import com.threerings.presents.dobj.*; import com.threerings.presents.net.*; +import static com.threerings.presents.Log.log; + /** * The client distributed object manager manages a set of proxy objects which mirror the * distributed objects maintained on the server. Requests for modifications, etc. are forwarded to @@ -165,7 +166,7 @@ public class ClientDObjectMgr } else if (obj instanceof UnsubscribeResponse) { int oid = ((UnsubscribeResponse)obj).getOid(); if (_dead.remove(oid) == null) { - Log.warning("Received unsub ACK from unknown object [oid=" + oid + "]."); + log.warning("Received unsub ACK from unknown object [oid=" + oid + "]."); } } else if (obj instanceof FailureResponse) { @@ -221,7 +222,7 @@ public class ClientDObjectMgr DObject target = _ocache.get(remoteOid); if (target == null) { if (!_dead.containsKey(remoteOid)) { - Log.warning("Unable to dispatch event on non-proxied object " + event + "."); + log.warning("Unable to dispatch event on non-proxied object " + event + "."); } return; } @@ -277,8 +278,7 @@ public class ClientDObjectMgr } } catch (Exception e) { - Log.warning("Failure processing event [event=" + event + ", target=" + target + "]."); - Log.logStackTrace(e); + log.warning("Failure processing event", "event", event, "target", target, e); } } @@ -298,7 +298,7 @@ public class ClientDObjectMgr // let the penders know that the object is available PendingRequest req = _penders.remove(obj.getOid()); if (req == null) { - Log.warning("Got object, but no one cares?! [oid=" + obj.getOid() + + log.warning("Got object, but no one cares?! [oid=" + obj.getOid() + ", obj=" + obj + "]."); return; } @@ -321,7 +321,7 @@ public class ClientDObjectMgr // let the penders know that the object is not available PendingRequest req = _penders.remove(oid); if (req == null) { - Log.warning("Failed to get object, but no one cares?! [oid=" + oid + "]."); + log.warning("Failed to get object, but no one cares?! [oid=" + oid + "]."); return; } @@ -383,7 +383,7 @@ public class ClientDObjectMgr dobj.removeSubscriber(target); } else { - Log.info("Requested to remove subscriber from non-proxied object [oid=" + oid + + log.info("Requested to remove subscriber from non-proxied object [oid=" + oid + ", sub=" + target + "]."); } } @@ -505,9 +505,9 @@ public class ClientDObjectMgr /** A debug hook that allows the dumping of all objects in the object table out to the log. */ protected DebugChords.Hook DUMP_OTABLE_HOOK = new DebugChords.Hook() { public void invoke () { - Log.info("Dumping " + _ocache.size() + " objects:"); + log.info("Dumping " + _ocache.size() + " objects:"); for (DObject obj : _ocache.values()) { - Log.info(obj.getClass().getName() + " " + obj); + log.info(obj.getClass().getName() + " " + obj); } } }; diff --git a/src/java/com/threerings/presents/client/DeltaCalculator.java b/src/java/com/threerings/presents/client/DeltaCalculator.java index d9758faa3..63abe50d6 100644 --- a/src/java/com/threerings/presents/client/DeltaCalculator.java +++ b/src/java/com/threerings/presents/client/DeltaCalculator.java @@ -23,10 +23,11 @@ package com.threerings.presents.client; import java.util.Arrays; -import com.threerings.presents.Log; import com.threerings.presents.net.PingRequest; import com.threerings.presents.net.PongResponse; +import static com.threerings.presents.Log.log; + /** * Used to compute the client/server time delta, attempting to account for * the network delay experienced when the server sends its current time to @@ -95,7 +96,7 @@ public class DeltaCalculator // minus the server's send time (plus network delay): dT = C - S _deltas[_iter] = recv - (server + nettime); - Log.debug("Calculated delta [delay=" + delay + + log.debug("Calculated delta [delay=" + delay + ", nettime=" + nettime + ", delta=" + _deltas[_iter] + ", rtt=" + (recv-send) + "]."); diff --git a/src/java/com/threerings/presents/client/InvocationDecoder.java b/src/java/com/threerings/presents/client/InvocationDecoder.java index a16b0d97b..5fa53752e 100644 --- a/src/java/com/threerings/presents/client/InvocationDecoder.java +++ b/src/java/com/threerings/presents/client/InvocationDecoder.java @@ -22,7 +22,8 @@ package com.threerings.presents.client; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; + +import static com.threerings.presents.Log.log; /** * Provides the basic functionality used to dispatch invocation @@ -45,7 +46,7 @@ public abstract class InvocationDecoder */ public void dispatchNotification (int methodId, Object[] args) { - Log.warning("Requested to dispatch unknown method " + + log.warning("Requested to dispatch unknown method " + "[receiver=" + receiver + ", methodId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); } diff --git a/src/java/com/threerings/presents/client/InvocationDirector.java b/src/java/com/threerings/presents/client/InvocationDirector.java index c182b4728..b8edeb3f3 100644 --- a/src/java/com/threerings/presents/client/InvocationDirector.java +++ b/src/java/com/threerings/presents/client/InvocationDirector.java @@ -27,7 +27,6 @@ import java.util.Iterator; import com.samskivert.util.HashIntMap; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; import com.threerings.presents.client.InvocationReceiver.Registration; import com.threerings.presents.data.ClientObject; @@ -47,6 +46,8 @@ import com.threerings.presents.dobj.Subscriber; import com.threerings.presents.net.Transport; +import static com.threerings.presents.Log.log; + /** * Handles the client side management of the invocation services. */ @@ -67,7 +68,7 @@ public class InvocationDirector { // sanity check if (_clobj != null) { - Log.warning("Zoiks, client object around during invmgr init!"); + log.warning("Zoiks, client object around during invmgr init!"); cleanup(); } @@ -97,7 +98,7 @@ public class InvocationDirector public void requestFailed (int oid, ObjectAccessException cause) { // aiya! we were unable to subscribe to the client object. we're hosed! - Log.warning("Invocation director unable to subscribe to client object " + + log.warning("Invocation director unable to subscribe to client object " + "[cloid=" + cloid + ", cause=" + cause + "]!"); _client.getClientObjectFailed(cause); } @@ -151,7 +152,7 @@ public class InvocationDirector if (_clobj != null) { Registration rreg = _clobj.receivers.get(receiverCode); if (rreg == null) { - Log.warning("Receiver unregistered for which we have no id to code mapping " + + log.warning("Receiver unregistered for which we have no id to code mapping " + "[code=" + receiverCode + "]."); } else { Object decoder = _receivers.remove(rreg.receiverId); @@ -209,7 +210,7 @@ public class InvocationDirector int invOid, int invCode, int methodId, Object[] args, Transport transport) { if (_clobj == null) { - Log.warning("Dropping invocation request on shutdown director [code=" + invCode + + log.warning("Dropping invocation request on shutdown director [code=" + invCode + ", methodId=" + methodId + "]."); return; } @@ -273,7 +274,7 @@ public class InvocationDirector // look up the invocation marshaller registered for that response ListenerMarshaller listener = _listeners.remove(reqId); if (listener == null) { - Log.warning("Received invocation response for which we have no registered listener " + + log.warning("Received invocation response for which we have no registered listener " + "[reqId=" + reqId + ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "]. It is possible that this listener was " + "flushed because the response did not arrive within " + @@ -288,9 +289,8 @@ public class InvocationDirector try { listener.dispatchResponse(methodId, args); } catch (Throwable t) { - Log.warning("Invocation response listener choked [listener=" + listener + - ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); - Log.logStackTrace(t); + log.warning("Invocation response listener choked [listener=" + listener + + ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "].", t); } // flush expired listeners periodically @@ -309,7 +309,7 @@ public class InvocationDirector // look up the decoder registered for this receiver InvocationDecoder decoder = _receivers.get(receiverId); if (decoder == null) { - Log.warning("Received notification for which we have no registered receiver " + + log.warning("Received notification for which we have no registered receiver " + "[recvId=" + receiverId + ", methodId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); return; @@ -321,9 +321,8 @@ public class InvocationDirector try { decoder.dispatchNotification(methodId, args); } catch (Throwable t) { - Log.warning("Invocation notification receiver choked [receiver=" + decoder.receiver + - ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); - Log.logStackTrace(t); + log.warning("Invocation notification receiver choked [receiver=" + decoder.receiver + + ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "].", t); } } @@ -362,7 +361,7 @@ public class InvocationDirector } public void requestFailed (int oid, ObjectAccessException cause) { - Log.warning("Aiya! Unable to subscribe to changed client object [cloid=" + oid + + log.warning("Aiya! Unable to subscribe to changed client object [cloid=" + oid + ", cause=" + cause + "]."); } }); diff --git a/src/java/com/threerings/presents/data/InvocationMarshaller.java b/src/java/com/threerings/presents/data/InvocationMarshaller.java index 033b361a4..a50ea51e2 100644 --- a/src/java/com/threerings/presents/data/InvocationMarshaller.java +++ b/src/java/com/threerings/presents/data/InvocationMarshaller.java @@ -25,8 +25,6 @@ import com.samskivert.util.StringUtil; import com.threerings.io.Streamable; -import com.threerings.presents.Log; - import com.threerings.presents.client.Client; import com.threerings.presents.client.InvocationService.ConfirmListener; import com.threerings.presents.client.InvocationService.ResultListener; @@ -37,6 +35,8 @@ import com.threerings.presents.dobj.InvocationResponseEvent; import com.threerings.presents.net.Transport; +import static com.threerings.presents.Log.log; + /** * Provides a base from which all invocation service marshallers extend. Handles functionality * common to all marshallers. @@ -110,7 +110,7 @@ public class InvocationMarshaller listener.requestFailed((String)args[0]); } else { - Log.warning("Requested to dispatch unknown invocation response " + + log.warning("Requested to dispatch unknown invocation response " + "[listener=" + listener + ", methodId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); } @@ -130,7 +130,7 @@ public class InvocationMarshaller throws Throwable { if (_invId != null && getClass() != ListenerMarshaller.class) { - Log.warning("Invocation listener never responded to: " + _invId); + log.warning("Invocation listener never responded to: " + _invId); } super.finalize(); } diff --git a/src/java/com/threerings/presents/dobj/DObject.java b/src/java/com/threerings/presents/dobj/DObject.java index 073b1cd48..cd887fb9c 100644 --- a/src/java/com/threerings/presents/dobj/DObject.java +++ b/src/java/com/threerings/presents/dobj/DObject.java @@ -36,9 +36,10 @@ import com.samskivert.util.StringUtil; import com.threerings.io.Streamable; import com.threerings.util.TrackedObject; -import com.threerings.presents.Log; import com.threerings.presents.net.Transport; +import static com.threerings.presents.Log.log; + /** * The distributed object forms the foundation of the Presents system. All information shared among * users of the system is done via distributed objects. A distributed object has a set of @@ -164,8 +165,8 @@ public class DObject _scount++; } else { - Log.warning("Refusing subscriber that's already in the list [dobj=" + which() + - ", subscriber=" + sub + "]"); + log.warning("Refusing subscriber that's already in the list", "dobj", which(), + "subscriber", sub); Thread.dumpStack(); } } @@ -225,7 +226,7 @@ public class DObject if (els != null) { _listeners = els; } else { - Log.warning("Refusing repeat listener registration [dobj=" + which() + + log.warning("Refusing repeat listener registration [dobj=" + which() + ", list=" + listener + "]"); Thread.dumpStack(); } @@ -357,7 +358,7 @@ public class DObject // clear the lock from the list if (ListUtil.clear(_locks, name) == null) { // complain if we didn't find the lock - Log.info("Unable to clear non-existent lock [lock=" + name + ", dobj=" + this + "]."); + log.info("Unable to clear non-existent lock [lock=" + name + ", dobj=" + this + "]."); } } @@ -438,9 +439,8 @@ public class DObject } } catch (Exception e) { - Log.warning("Listener choked during notification [list=" + listener + - ", event=" + event + "]."); - Log.logStackTrace(e); + log.warning("Listener choked during notification [list=" + listener + + ", event=" + event + "].", e); } } } @@ -464,9 +464,7 @@ public class DObject ((ProxySubscriber)sub).eventReceived(event); } } catch (Exception e) { - Log.warning("Proxy choked during notification [sub=" + sub + - ", event=" + event + "]."); - Log.logStackTrace(e); + log.warning("Proxy choked during notification", "sub", sub, "event", event, e); } } } @@ -555,7 +553,7 @@ public class DObject _omgr.postEvent(event); } else { - Log.info("Dropping event for non- or no longer managed object [oid=" + getOid() + + log.info("Dropping event for non- or no longer managed object [oid=" + getOid() + ", class=" + getClass().getName() + ", event=" + event + "]."); } } @@ -734,7 +732,7 @@ public class DObject { // sanity check if (_tcount != 0) { - Log.warning("Transaction cleared with non-zero nesting count [dobj=" + this + "]."); + log.warning("Transaction cleared with non-zero nesting count", "dobj", this); _tcount = 0; } @@ -827,7 +825,7 @@ public class DObject if (_omgr != null && _omgr.isManager(this)) { oldEntry = set.removeKey(key); if (oldEntry == null) { - Log.warning("Requested to remove non-element [set=" + name + ", key=" + key + "]."); + log.warning("Requested to remove non-element", "set", name, "key", key); Thread.dumpStack(); } } diff --git a/src/java/com/threerings/presents/dobj/DSet.java b/src/java/com/threerings/presents/dobj/DSet.java index f001a4ef9..90e1618c6 100644 --- a/src/java/com/threerings/presents/dobj/DSet.java +++ b/src/java/com/threerings/presents/dobj/DSet.java @@ -34,7 +34,7 @@ import com.threerings.io.ObjectInputStream; import com.threerings.io.ObjectOutputStream; import com.threerings.io.Streamable; -import com.threerings.presents.Log; +import static com.threerings.presents.Log.log; /** * The distributed set class provides a means by which an unordered set of objects can be @@ -199,7 +199,7 @@ public class DSet // the crazy sanity checks if (_size < 0 ||_size > _entries.length || (_size > 0 && _entries[_size-1] == null)) { - Log.warning("DSet in a bad way [size=" + _size + + log.warning("DSet in a bad way [size=" + _size + ", entries=" + StringUtil.toString(_entries) + "]."); Thread.dumpStack(); } @@ -221,7 +221,7 @@ public class DSet throw new ConcurrentModificationException(); } if (_ssize != _size) { - Log.warning("Size changed during iteration [ssize=" + _ssize + + log.warning("Size changed during iteration [ssize=" + _ssize + ", nsize=" + _size + ", entsries=" + StringUtil.toString(_entries) + "]."); Thread.dumpStack(); @@ -273,7 +273,7 @@ public class DSet // if the element is already in the set, bail now if (eidx >= 0) { - Log.warning("Refusing to add duplicate entry [entry=" + elem + ", set=" + this + "]."); + log.warning("Refusing to add duplicate entry [entry=" + elem + ", set=" + this + "]."); return false; } @@ -285,7 +285,7 @@ public class DSet if (_size >= elength) { // sanity check if (elength > 2048) { - Log.warning("Requested to expand to questionably large size [l=" + elength + "]."); + log.warning("Requested to expand to questionably large size [l=" + elength + "]."); Thread.dumpStack(); } @@ -331,7 +331,7 @@ public class DSet { // don't fail, but generate a warning if we're passed a null key if (key == null) { - Log.warning("Requested to remove null key."); + log.warning("Requested to remove null key."); Thread.dumpStack(); return null; } diff --git a/src/java/com/threerings/presents/dobj/DynamicListener.java b/src/java/com/threerings/presents/dobj/DynamicListener.java index bd3a85c8d..d37470a29 100644 --- a/src/java/com/threerings/presents/dobj/DynamicListener.java +++ b/src/java/com/threerings/presents/dobj/DynamicListener.java @@ -24,7 +24,6 @@ package com.threerings.presents.dobj; import java.lang.reflect.Method; import java.util.HashMap; -import java.util.logging.Level; import com.samskivert.util.MethodFinder; import com.samskivert.util.StringUtil; @@ -110,7 +109,7 @@ public class DynamicListener try { method.invoke(_target, arguments); } catch (Exception e) { - log.log(Level.WARNING, "Failed to dispatch event callback " + + log.warning("Failed to dispatch event callback " + name + "(" + StringUtil.toString(arguments) + ").", e); } } diff --git a/src/java/com/threerings/presents/dobj/EntryAddedEvent.java b/src/java/com/threerings/presents/dobj/EntryAddedEvent.java index 38675f8ae..c6e08d17b 100644 --- a/src/java/com/threerings/presents/dobj/EntryAddedEvent.java +++ b/src/java/com/threerings/presents/dobj/EntryAddedEvent.java @@ -23,7 +23,7 @@ package com.threerings.presents.dobj; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; +import static com.threerings.presents.Log.log; /** * An entry added event is dispatched when an entry is added to a {@link DSet} attribute of a diff --git a/src/java/com/threerings/presents/dobj/EntryRemovedEvent.java b/src/java/com/threerings/presents/dobj/EntryRemovedEvent.java index 9efe38f39..0aa608e0e 100644 --- a/src/java/com/threerings/presents/dobj/EntryRemovedEvent.java +++ b/src/java/com/threerings/presents/dobj/EntryRemovedEvent.java @@ -21,7 +21,7 @@ package com.threerings.presents.dobj; -import com.threerings.presents.Log; +import static com.threerings.presents.Log.log; /** * An entry removed event is dispatched when an entry is removed from a {@link DSet} attribute of a @@ -88,7 +88,7 @@ public class EntryRemovedEvent extends NamedEvent _oldEntry = set.removeKey(_key); if (_oldEntry == null) { // complain if there was actually nothing there - Log.warning("No matching entry to remove [key=" + _key + ", set=" + set + "]."); + log.warning("No matching entry to remove [key=" + _key + ", set=" + set + "]."); return false; } } diff --git a/src/java/com/threerings/presents/dobj/EntryUpdatedEvent.java b/src/java/com/threerings/presents/dobj/EntryUpdatedEvent.java index ee59a3c19..3b0916052 100644 --- a/src/java/com/threerings/presents/dobj/EntryUpdatedEvent.java +++ b/src/java/com/threerings/presents/dobj/EntryUpdatedEvent.java @@ -23,10 +23,10 @@ package com.threerings.presents.dobj; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; - import com.threerings.presents.net.Transport; +import static com.threerings.presents.Log.log; + /** * An entry updated event is dispatched when an entry of a {@link DSet} is updated. It can also be * constructed to request the update of an entry and posted to the dobjmgr. @@ -107,7 +107,7 @@ public class EntryUpdatedEvent extends NamedEvent _oldEntry = set.update(_entry); if (_oldEntry == null) { // complain if we didn't update anything - Log.warning("No matching entry to update [entry=" + this + ", set=" + set + "]."); + log.warning("No matching entry to update [entry=" + this + ", set=" + set + "]."); return false; } } diff --git a/src/java/com/threerings/presents/net/PongResponse.java b/src/java/com/threerings/presents/net/PongResponse.java index c838d9edb..865bd4f57 100644 --- a/src/java/com/threerings/presents/net/PongResponse.java +++ b/src/java/com/threerings/presents/net/PongResponse.java @@ -26,7 +26,7 @@ import java.io.IOException; import com.threerings.io.ObjectInputStream; import com.threerings.io.ObjectOutputStream; -import com.threerings.presents.Log; +import static com.threerings.presents.Log.log; public class PongResponse extends DownstreamMessage { @@ -90,7 +90,7 @@ public class PongResponse extends DownstreamMessage // the time spent between unpacking the ping and packing the pong // is the processing delay if (_pingStamp == 0L) { - Log.warning("Pong response written that was not constructed " + + log.warning("Pong response written that was not constructed " + "with a valid ping stamp [rsp=" + this + "]."); _processDelay = 0; } else { diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 6d8761eb5..0bc2e602f 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -31,7 +31,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.logging.Level; import com.samskivert.jdbc.RepositoryUnit; import com.samskivert.jdbc.WriteOnlyUnit; @@ -162,7 +161,7 @@ public class PeerManager try { execute(); } catch (Throwable t) { - log.log(Level.WARNING, getClass().getName() + " failed."); + log.warning(getClass().getName() + " failed."); } } @@ -335,7 +334,7 @@ public class PeerManager oout.writeObject(action); actionBytes = bout.toByteArray(); } catch (Exception e) { - log.log(Level.WARNING, "Failed to serialize node action [action=" + action + "].", e); + log.warning("Failed to serialize node action [action=" + action + "].", e); return; } @@ -603,7 +602,7 @@ public class PeerManager } } public void requestFailed (Exception cause) { - log.log(Level.WARNING, "Lock acquisition failed [lock=" + lock + "].", cause); + log.warning("Lock acquisition failed [lock=" + lock + "].", cause); operation.fail(null); } }); @@ -731,7 +730,7 @@ public class PeerManager action = (NodeAction)oin.readObject(); action.invoke(); } catch (Exception e) { - log.log(Level.WARNING, "Failed to execute node action [from=" + caller.who() + + log.warning("Failed to execute node action [from=" + caller.who() + ", action=" + action + ", serializedSize=" + serializedAction.length + "]."); } } @@ -807,7 +806,7 @@ public class PeerManager try { refreshPeer(record); } catch (Exception e) { - log.log(Level.WARNING, "Failure refreshing peer " + record + ".", e); + log.warning("Failure refreshing peer " + record + ".", e); } } } diff --git a/src/java/com/threerings/presents/peer/server/PeerNode.java b/src/java/com/threerings/presents/peer/server/PeerNode.java index 49d6cb33a..55396ddcc 100644 --- a/src/java/com/threerings/presents/peer/server/PeerNode.java +++ b/src/java/com/threerings/presents/peer/server/PeerNode.java @@ -119,7 +119,7 @@ public class PeerNode // if our client hasn't updated its record since we last tried to logon, then just // chill if ((_lastConnectStamp - _record.lastUpdated.getTime()) > STALE_INTERVAL) { - log.fine("Not reconnecting to stale client [record=" + _record + + log.debug("Not reconnecting to stale client [record=" + _record + ", lastTry=" + new Date(_lastConnectStamp) + "]."); return; } diff --git a/src/java/com/threerings/presents/server/Authenticator.java b/src/java/com/threerings/presents/server/Authenticator.java index be2ffd57f..512392f62 100644 --- a/src/java/com/threerings/presents/server/Authenticator.java +++ b/src/java/com/threerings/presents/server/Authenticator.java @@ -21,8 +21,6 @@ package com.threerings.presents.server; -import java.util.logging.Level; - import com.samskivert.io.PersistenceException; import com.samskivert.util.Invoker; @@ -69,7 +67,7 @@ public abstract class Authenticator try { processAuthentication(conn, rsp); } catch (Exception e) { // Persistence or Runtime - log.log(Level.WARNING, "Error authenticating user [areq=" + req + "].", e); + log.warning("Error authenticating user [areq=" + req + "].", e); rdata.code = AuthCodes.SERVER_ERROR; } return true; diff --git a/src/java/com/threerings/presents/server/ClientManager.java b/src/java/com/threerings/presents/server/ClientManager.java index 8a50c5f05..eb6649a11 100644 --- a/src/java/com/threerings/presents/server/ClientManager.java +++ b/src/java/com/threerings/presents/server/ClientManager.java @@ -25,7 +25,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; -import java.util.logging.Level; import com.samskivert.util.Interval; import com.samskivert.util.ObserverList; @@ -119,7 +118,7 @@ public class ClientManager try { pc.shutdown(); } catch (Exception e) { - log.log(Level.WARNING, "Client choked in shutdown() [client=" + + log.warning("Client choked in shutdown() [client=" + StringUtil.safeToString(pc) + "].", e); } } @@ -298,7 +297,7 @@ public class ClientManager return; } - log.fine("Destroying client " + clobj.who() + "."); + log.debug("Destroying client " + clobj.who() + "."); // we're all clear to go; remove the mapping _objmap.remove(username); @@ -402,7 +401,7 @@ public class ClientManager // remove the client from the connection map PresentsClient client = _conmap.remove(conn); if (client != null) { - log.fine("Unmapped client [client=" + client + ", conn=" + conn + "]."); + log.debug("Unmapped client [client=" + client + ", conn=" + conn + "]."); // let the client know the connection went away client.wasUnmapped(); @@ -497,7 +496,7 @@ public class ClientManager ", dtime=" + (now-client.getNetworkStamp()) + "ms]."); client.endSession(); } catch (Exception e) { - log.log(Level.WARNING, "Choke while flushing client [victim=" + client + "].", e); + log.warning("Choke while flushing client [victim=" + client + "].", e); } } } @@ -515,7 +514,7 @@ public class ClientManager _clop.apply(clobj); } catch (Exception e) { - log.log(Level.WARNING, "Client op failed [username=" + username + + log.warning("Client op failed [username=" + username + ", clop=" + _clop + "].", e); } finally { diff --git a/src/java/com/threerings/presents/server/ClientResolver.java b/src/java/com/threerings/presents/server/ClientResolver.java index 899af6412..e894e0b72 100644 --- a/src/java/com/threerings/presents/server/ClientResolver.java +++ b/src/java/com/threerings/presents/server/ClientResolver.java @@ -26,12 +26,13 @@ import java.util.ArrayList; import com.samskivert.util.Invoker; import com.threerings.util.Name; -import com.threerings.presents.Log; import com.threerings.presents.data.ClientObject; import com.threerings.presents.data.PermissionPolicy; import com.threerings.presents.dobj.DObject; import com.threerings.presents.dobj.ObjectAccessException; +import static com.threerings.presents.Log.log; + /** * Used to resolve client data when a user starts a session (or when some other entity needs access * to a client object). Implementations will want to extend this class and override {@link @@ -121,8 +122,7 @@ public class ClientResolver extends Invoker.Unit _clobj.reference(); crl.clientResolved(_username, _clobj); } catch (Exception e) { - Log.warning("Client resolution listener choked in clientResolved() " + crl); - Log.logStackTrace(e); + log.warning("Client resolution listener choked in clientResolved() " + crl, e); } } @@ -172,9 +172,8 @@ public class ClientResolver extends Invoker.Unit try { crl.resolutionFailed(_username, cause); } catch (Exception e) { - Log.warning("Client resolution listener choked in resolutionFailed() [crl=" + crl + - ", username=" + _username + ", cause=" + cause + "]."); - Log.logStackTrace(e); + log.warning("Client resolution listener choked in resolutionFailed() [crl=" + crl + + ", username=" + _username + ", cause=" + cause + "].", e); } } } diff --git a/src/java/com/threerings/presents/server/InvocationDispatcher.java b/src/java/com/threerings/presents/server/InvocationDispatcher.java index 7d853587b..a92cb3be7 100644 --- a/src/java/com/threerings/presents/server/InvocationDispatcher.java +++ b/src/java/com/threerings/presents/server/InvocationDispatcher.java @@ -23,10 +23,11 @@ package com.threerings.presents.server; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; import com.threerings.presents.data.ClientObject; import com.threerings.presents.data.InvocationMarshaller; +import static com.threerings.presents.Log.log; + /** * Provides the base class via which invocation service requests are * dispatched. @@ -49,7 +50,7 @@ public abstract class InvocationDispatcher ClientObject source, int methodId, Object[] args) throws InvocationException { - Log.warning("Requested to dispatch unknown method " + + log.warning("Requested to dispatch unknown method " + "[provider=" + provider + ", sourceOid=" + source.getOid() + ", methodId=" + methodId + diff --git a/src/java/com/threerings/presents/server/InvocationManager.java b/src/java/com/threerings/presents/server/InvocationManager.java index e80f807aa..8aa35f686 100644 --- a/src/java/com/threerings/presents/server/InvocationManager.java +++ b/src/java/com/threerings/presents/server/InvocationManager.java @@ -30,7 +30,6 @@ import com.samskivert.util.StringUtil; import com.threerings.io.Streamable; import com.threerings.util.StreamableArrayList; -import com.threerings.presents.Log; import com.threerings.presents.data.ClientObject; import com.threerings.presents.data.InvocationMarshaller.ListenerMarshaller; import com.threerings.presents.data.InvocationMarshaller; @@ -44,6 +43,8 @@ import com.threerings.presents.dobj.RootDObjectManager; import com.threerings.presents.net.Transport; +import static com.threerings.presents.Log.log; + /** * The invocation services provide client to server invocations (service requests) and server to * client invocations (responses and notifications). Via this mechanism, the client can make @@ -154,13 +155,13 @@ public class InvocationManager public void clearDispatcher (InvocationMarshaller marsh) { if (marsh == null) { - Log.warning("Refusing to unregister null marshaller."); + log.warning("Refusing to unregister null marshaller."); Thread.dumpStack(); return; } if (_dispatchers.remove(marsh.getInvocationCode()) == null) { - Log.warning("Requested to remove unregistered marshaller? " + + log.warning("Requested to remove unregistered marshaller? " + "[marsh=" + marsh + "]."); Thread.dumpStack(); } @@ -218,7 +219,7 @@ public class InvocationManager // make sure the client is still around ClientObject source = (ClientObject)_omgr.getObject(clientOid); if (source == null) { - Log.info("Client no longer around for invocation " + + log.info("Client no longer around for invocation " + "request [clientOid=" + clientOid + ", code=" + invCode + ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); @@ -228,7 +229,7 @@ public class InvocationManager // look up the dispatcher InvocationDispatcher disp = _dispatchers.get(invCode); if (disp == null) { - Log.info("Received invocation request but dispatcher " + + log.info("Received invocation request but dispatcher " + "registration was already cleared [code=" + invCode + ", methId=" + methodId + ", args=" + StringUtil.toString(args) + ", marsh=" + @@ -271,7 +272,7 @@ public class InvocationManager rlist.requestFailed(ie.getMessage()); } else { - Log.warning("Service request failed but we've got no " + + log.warning("Service request failed but we've got no " + "listener to inform of the failure " + "[caller=" + source.who() + ", code=" + invCode + ", dispatcher=" + disp + ", methodId=" + methodId + @@ -280,10 +281,9 @@ public class InvocationManager } } catch (Throwable t) { - Log.warning("Dispatcher choked [disp=" + disp + + log.warning("Dispatcher choked [disp=" + disp + ", caller=" + source.who() + ", methId=" + methodId + - ", args=" + StringUtil.toString(args) + "]."); - Log.logStackTrace(t); + ", args=" + StringUtil.toString(args) + "].", t); // avoid logging an error when the listener notices that it's // been ignored. diff --git a/src/java/com/threerings/presents/server/InvocationSender.java b/src/java/com/threerings/presents/server/InvocationSender.java index d16a6bce0..1b08ef4b5 100644 --- a/src/java/com/threerings/presents/server/InvocationSender.java +++ b/src/java/com/threerings/presents/server/InvocationSender.java @@ -23,13 +23,14 @@ package com.threerings.presents.server; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; import com.threerings.presents.client.InvocationReceiver.Registration; import com.threerings.presents.data.ClientObject; import com.threerings.presents.dobj.InvocationNotificationEvent; import com.threerings.presents.net.Transport; +import static com.threerings.presents.Log.log; + /** * Provides basic functionality used by all invocation sender classes. */ @@ -56,7 +57,7 @@ public abstract class InvocationSender // specific client Registration rreg = target.receivers.get(receiverCode); if (rreg == null) { - Log.warning("Unable to locate receiver for invocation service notification " + + log.warning("Unable to locate receiver for invocation service notification " + "[clobj=" + target.who() + ", code=" + receiverCode + ", methId=" + methodId + ", args=" + StringUtil.toString(args) + "]."); Thread.dumpStack(); diff --git a/src/java/com/threerings/presents/server/PresentsClient.java b/src/java/com/threerings/presents/server/PresentsClient.java index b4bebe8f8..f2982979e 100644 --- a/src/java/com/threerings/presents/server/PresentsClient.java +++ b/src/java/com/threerings/presents/server/PresentsClient.java @@ -25,7 +25,6 @@ import java.io.IOException; import java.net.InetAddress; import java.util.HashMap; import java.util.TimeZone; -import java.util.logging.Level; import com.samskivert.util.HashIntMap; import com.samskivert.util.ResultListener; @@ -247,7 +246,7 @@ public class PresentsClient } public void resolutionFailed (Name username, Exception reason) { - log.log(Level.WARNING, "Unable to resolve new client object [oldname=" + _username + + log.warning("Unable to resolve new client object [oldname=" + _username + ", newname=" + username + ", reason=" + reason + "].", reason); // let our listener know we're hosed @@ -308,7 +307,7 @@ public class PresentsClient try { sessionDidEnd(); } catch (Exception e) { - log.log(Level.WARNING, "Choked in sessionDidEnd " + this + ".", e); + log.warning("Choked in sessionDidEnd " + this + ".", e); } // release (and destroy) our client object @@ -364,7 +363,7 @@ public class PresentsClient public void resolutionFailed (Name username, Exception reason) { // urk; nothing to do but complain and get the f**k out of dodge - log.log(Level.WARNING, "Unable to resolve client [username=" + username + "].", reason); + log.warning("Unable to resolve client [username=" + username + "].", reason); // end the session now to prevent danglage endSession(); @@ -990,7 +989,7 @@ public class PresentsClient { public void dispatch (final PresentsClient client, UpstreamMessage msg) { - log.fine("Client requested logoff " + client + "."); + log.debug("Client requested logoff " + client + "."); client.safeEndSession(); } } diff --git a/src/java/com/threerings/presents/server/PresentsDObjectMgr.java b/src/java/com/threerings/presents/server/PresentsDObjectMgr.java index 915d75b1e..4d8824102 100644 --- a/src/java/com/threerings/presents/server/PresentsDObjectMgr.java +++ b/src/java/com/threerings/presents/server/PresentsDObjectMgr.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.logging.Level; import com.samskivert.util.AuditLogger; import com.samskivert.util.HashIntMap; @@ -331,8 +330,7 @@ public class PresentsDObjectMgr handleFatalError(unit, e); } catch (Throwable t) { - log.log(Level.WARNING, - "Execution unit failed [unit=" + StringUtil.safeToString(unit) + "].", t); + log.warning("Execution unit failed", "unit", unit, t); } // compute the elapsed time in microseconds @@ -340,9 +338,8 @@ public class PresentsDObjectMgr // report excessively long units if (elapsed > 500000 && !(unit instanceof LongRunnable)) { - log.warning("Long dobj unit [u=" + StringUtil.safeToString(unit) + - " (" + StringUtil.shortClassName(unit) + ")" + - ", time=" + (elapsed/1000) + "ms]."); + log.warning("Long dobj unit " + StringUtil.shortClassName(unit), "unit", unit, + "time", (elapsed/1000) + "ms"); } // periodically sample and record the time spent processing a unit @@ -380,7 +377,7 @@ public class PresentsDObjectMgr // look up the target object DObject target = _objects.get(event.getTargetOid()); if (target == null) { - log.fine("Compound event target no longer exists [event=" + event + "]."); + log.debug("Compound event target no longer exists [event=" + event + "]."); return; } @@ -411,7 +408,7 @@ public class PresentsDObjectMgr // look up the target object DObject target = _objects.get(event.getTargetOid()); if (target == null) { - log.fine("Event target no longer exists [event=" + event + "]."); + log.debug("Event target no longer exists [event=" + event + "]."); return; } @@ -462,7 +459,7 @@ public class PresentsDObjectMgr handleFatalError(event, e); } catch (Throwable t) { - log.log(Level.WARNING, "Failure processing event [event=" + event + + log.warning("Failure processing event [event=" + event + ", target=" + target + "].", t); } @@ -481,7 +478,7 @@ public class PresentsDObjectMgr if (_fatalThrottle.throttleOp()) { throw error; } - log.log(Level.WARNING, "Fatal error caused by '" + causer + "': " + error, error); + log.warning("Fatal error caused by '" + causer + "': " + error, error); } /** @@ -772,7 +769,7 @@ public class PresentsDObjectMgr try { sub.objectAvailable(obj); } catch (Exception e) { - log.log(Level.WARNING, "Subscriber choked during object available " + + log.warning("Subscriber choked during object available " + "[obj=" + StringUtil.safeToString(obj) + ", sub=" + sub + "].", e); } } diff --git a/src/java/com/threerings/presents/server/PresentsInvoker.java b/src/java/com/threerings/presents/server/PresentsInvoker.java index c587f6758..4187079c7 100644 --- a/src/java/com/threerings/presents/server/PresentsInvoker.java +++ b/src/java/com/threerings/presents/server/PresentsInvoker.java @@ -26,7 +26,7 @@ import java.util.Iterator; import com.samskivert.util.Invoker; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; +import static com.threerings.presents.Log.log; /** * Extends the generic {@link Invoker} and integrates it a bit more into @@ -172,7 +172,7 @@ public class PresentsInvoker extends Invoker // otherwise end it, and complain if we're ending it // because of passes if (_passCount >= MAX_PASSES) { - Log.warning("Shutdown Unit passed 50 times without " + + log.warning("Shutdown Unit passed 50 times without " + "finishing, shutting down harshly."); } doShutdown(); @@ -185,7 +185,7 @@ public class PresentsInvoker extends Invoker protected boolean checkLoops () { if (_loopCount > MAX_LOOPS) { - Log.warning("Shutdown Unit looped on one thread 10000 times " + + log.warning("Shutdown Unit looped on one thread 10000 times " + "without finishing, shutting down harshly."); doShutdown(); return true; diff --git a/src/java/com/threerings/presents/server/PresentsObjectAccess.java b/src/java/com/threerings/presents/server/PresentsObjectAccess.java index e3cf1e096..42a4f4c18 100644 --- a/src/java/com/threerings/presents/server/PresentsObjectAccess.java +++ b/src/java/com/threerings/presents/server/PresentsObjectAccess.java @@ -21,7 +21,6 @@ package com.threerings.presents.server; -import com.threerings.presents.Log; import com.threerings.presents.data.ClientObject; import com.threerings.presents.dobj.AccessController; import com.threerings.presents.dobj.DEvent; @@ -31,6 +30,8 @@ import com.threerings.presents.dobj.MessageEvent; import com.threerings.presents.dobj.NamedEvent; import com.threerings.presents.dobj.Subscriber; +import static com.threerings.presents.Log.log; + /** * Defines the various object access controllers used by the Presents server. */ @@ -76,7 +77,7 @@ public class PresentsObjectAccess if (sub instanceof PresentsClient) { allowed = ((PresentsClient)sub).getClientObject() == object; if (!allowed) { - Log.warning("Refusing ClientObject subscription request " + + log.warning("Refusing ClientObject subscription request " + "[obj=" + ((ClientObject)object).who() + ", sub=" + sub + "]."); } } diff --git a/src/java/com/threerings/presents/server/PresentsServer.java b/src/java/com/threerings/presents/server/PresentsServer.java index faca86c01..c85dc8153 100644 --- a/src/java/com/threerings/presents/server/PresentsServer.java +++ b/src/java/com/threerings/presents/server/PresentsServer.java @@ -22,7 +22,6 @@ package com.threerings.presents.server; import java.util.ArrayList; -import java.util.logging.Level; import com.samskivert.util.Interval; import com.samskivert.util.ObserverList; @@ -123,7 +122,7 @@ public class PresentsServer Runnable trun = (Runnable)tmclass.newInstance(); trun.run(); } catch (Exception e) { - log.log(Level.WARNING, "Unable to invoke test module '" + testmod + "'.", e); + log.warning("Unable to invoke test module '" + testmod + "'.", e); } } @@ -132,7 +131,7 @@ public class PresentsServer server.run(); } catch (Exception e) { - log.log(Level.WARNING, "Unable to initialize server.", e); + log.warning("Unable to initialize server.", e); System.exit(-1); } } @@ -305,7 +304,7 @@ public class PresentsServer try { rptr.appendReport(report, now, sinceLast, reset); } catch (Throwable t) { - log.log(Level.WARNING, "Reporter choked [rptr=" + rptr + "].", t); + log.warning("Reporter choked [rptr=" + rptr + "].", t); } } diff --git a/src/java/com/threerings/presents/server/Rejector.java b/src/java/com/threerings/presents/server/Rejector.java index d577ed161..991d90316 100644 --- a/src/java/com/threerings/presents/server/Rejector.java +++ b/src/java/com/threerings/presents/server/Rejector.java @@ -21,8 +21,6 @@ package com.threerings.presents.server; -import java.util.logging.Level; - import com.samskivert.io.PersistenceException; import com.samskivert.util.Invoker; @@ -75,7 +73,7 @@ public class Rejector extends PresentsServer server.init(); server.run(); } catch (Exception e) { - log.log(Level.WARNING, "Unable to initialize server.", e); + log.warning("Unable to initialize server.", e); } } diff --git a/src/java/com/threerings/presents/server/TimeBaseProvider.java b/src/java/com/threerings/presents/server/TimeBaseProvider.java index a302ed9ea..7103dfdbb 100644 --- a/src/java/com/threerings/presents/server/TimeBaseProvider.java +++ b/src/java/com/threerings/presents/server/TimeBaseProvider.java @@ -24,7 +24,6 @@ package com.threerings.presents.server; import java.util.HashMap; import com.samskivert.util.ResultListener; -import com.threerings.presents.Log; import com.threerings.presents.client.TimeBaseService.GotTimeBaseListener; import com.threerings.presents.data.ClientObject; @@ -33,6 +32,8 @@ import com.threerings.presents.data.TimeBaseObject; import com.threerings.presents.dobj.RootDObjectManager; +import static com.threerings.presents.Log.log; + /** * Provides the server-side of the time base services. The time base services provide a means by * which delta times can be sent over the network which are expanded based on a shared base time diff --git a/src/java/com/threerings/presents/server/net/AuthingConnection.java b/src/java/com/threerings/presents/server/net/AuthingConnection.java index 5513b54a0..9c25c3779 100644 --- a/src/java/com/threerings/presents/server/net/AuthingConnection.java +++ b/src/java/com/threerings/presents/server/net/AuthingConnection.java @@ -27,11 +27,12 @@ import java.nio.channels.SocketChannel; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; import com.threerings.presents.net.AuthRequest; import com.threerings.presents.net.AuthResponse; import com.threerings.presents.net.UpstreamMessage; +import static com.threerings.presents.Log.log; + /** * The authing connection manages the client connection until * authentication has completed (for better or for worse). @@ -66,7 +67,7 @@ public class AuthingConnection extends Connection _cmgr.getAuthenticator().authenticateConnection(this); } catch (ClassCastException cce) { - Log.warning("Received non-authreq message during " + + log.warning("Received non-authreq message during " + "authentication process [conn=" + this + ", msg=" + msg + "]."); } diff --git a/src/java/com/threerings/presents/server/net/Connection.java b/src/java/com/threerings/presents/server/net/Connection.java index 457e1b25b..175f871ee 100644 --- a/src/java/com/threerings/presents/server/net/Connection.java +++ b/src/java/com/threerings/presents/server/net/Connection.java @@ -44,12 +44,13 @@ import com.threerings.io.ObjectOutputStream; import com.threerings.io.UnreliableObjectInputStream; import com.threerings.io.UnreliableObjectOutputStream; -import com.threerings.presents.Log; import com.threerings.presents.net.DownstreamMessage; import com.threerings.presents.net.PingRequest; import com.threerings.presents.net.UpstreamMessage; import com.threerings.presents.util.DatagramSequencer; +import static com.threerings.presents.Log.log; + /** * The base connection class implements the net event handler interface and processes raw incoming * network data into a stream of parsed UpstreamMessage objects. It also provides the @@ -166,7 +167,7 @@ public abstract class Connection implements NetEventHandler { // we shouldn't be closed twice if (isClosed()) { - Log.warning("Attempted to re-close connection " + this + "."); + log.warning("Attempted to re-close connection " + this + "."); Thread.dumpStack(); return; } @@ -186,7 +187,7 @@ public abstract class Connection implements NetEventHandler { // if we're already closed, then something is seriously funny if (isClosed()) { - Log.warning("Failure reported on closed connection " + this + "."); + log.warning("Failure reported on closed connection " + this + "."); Thread.dumpStack(); return; } @@ -264,11 +265,11 @@ public abstract class Connection implements NetEventHandler return; } - Log.debug("Closing channel " + this + "."); + log.debug("Closing channel " + this + "."); try { _channel.close(); } catch (IOException ioe) { - Log.warning("Error closing connection [conn=" + this + ", error=" + ioe + "]."); + log.warning("Error closing connection [conn=" + this + ", error=" + ioe + "]."); } // clear out our references to prevent repeat closings @@ -314,7 +315,7 @@ public abstract class Connection implements NetEventHandler close(); } catch (ClassNotFoundException cnfe) { - Log.warning("Error reading message from socket [channel=" + + log.warning("Error reading message from socket [channel=" + StringUtil.safeToString(_channel) + ", error=" + cnfe + "]."); // deal with the failure String errmsg = "Unable to decode incoming message."; @@ -324,7 +325,7 @@ public abstract class Connection implements NetEventHandler // don't log a warning for the ever-popular "the client dropped the connection" failure String msg = ioe.getMessage(); if (msg == null || msg.indexOf("reset by peer") == -1) { - Log.warning("Error reading message from socket [channel=" + + log.warning("Error reading message from socket [channel=" + StringUtil.safeToString(_channel) + ", error=" + ioe + "]."); } // deal with the failure @@ -344,7 +345,7 @@ public abstract class Connection implements NetEventHandler try { _digest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException nsae) { - Log.warning("Missing MD5 algorithm."); + log.warning("Missing MD5 algorithm."); return; } ByteBufferInputStream bin = new ByteBufferInputStream(buf); @@ -360,7 +361,7 @@ public abstract class Connection implements NetEventHandler buf.position(4); for (int ii = 0; ii < 8; ii++) { if (hash[ii] != buf.get()) { - Log.warning("Datagram failed hash check [connectionId=" + _connectionId + + log.warning("Datagram failed hash check [connectionId=" + _connectionId + ", source=" + source + "]."); return; } @@ -379,10 +380,10 @@ public abstract class Connection implements NetEventHandler _handler.handleMessage(msg); } catch (ClassNotFoundException cnfe) { - Log.warning("Error reading datagram [error=" + cnfe + "]."); + log.warning("Error reading datagram [error=" + cnfe + "]."); } catch (IOException ioe) { - Log.warning("Error reading datagram [error=" + ioe + "]."); + log.warning("Error reading datagram [error=" + ioe + "]."); } } @@ -396,7 +397,7 @@ public abstract class Connection implements NetEventHandler if (isClosed()) { return true; } - Log.info("Disconnecting non-communicative client [conn=" + this + + log.info("Disconnecting non-communicative client [conn=" + this + ", idle=" + idleMillis + "ms]."); return true; } diff --git a/src/java/com/threerings/presents/server/net/ConnectionManager.java b/src/java/com/threerings/presents/server/net/ConnectionManager.java index 039755793..e86707f81 100644 --- a/src/java/com/threerings/presents/server/net/ConnectionManager.java +++ b/src/java/com/threerings/presents/server/net/ConnectionManager.java @@ -39,7 +39,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Set; -import java.util.logging.Level; import com.samskivert.util.*; @@ -286,7 +285,7 @@ public class ConnectionManager extends LoopingThread log.info("Server listening on " + isa + "."); } catch (IOException ioe) { - log.log(Level.WARNING, "Failure listening to socket on port '" + + log.warning("Failure listening to socket on port '" + _ports[ii] + "'.", ioe); _failure = ioe; } @@ -339,7 +338,7 @@ public class ConnectionManager extends LoopingThread log.info("Server accepting datagrams on " + isa + "."); } catch (IOException ioe) { - log.log(Level.WARNING, "Failure opening datagram channel on port '" + + log.warning("Failure opening datagram channel on port '" + port + "'.", ioe); } } @@ -459,14 +458,14 @@ public class ConnectionManager extends LoopingThread conn.getAuthRequest(), conn.getAuthResponse()); } catch (IOException ioe) { - log.log(Level.WARNING, "Failure upgrading authing connection to running.", ioe); + log.warning("Failure upgrading authing connection to running.", ioe); } } Set ready = null; try { // check for incoming network events -// log.fine("Selecting from " + StringUtil.toString(_selector.keys()) + " (" + +// log.debug("Selecting from " + StringUtil.toString(_selector.keys()) + " (" + // SELECT_LOOP_TIME + ")."); int ecount = _selector.select(SELECT_LOOP_TIME); ready = _selector.selectedKeys(); @@ -482,7 +481,7 @@ public class ConnectionManager extends LoopingThread } catch (IOException ioe) { if ("Invalid argument".equals(ioe.getMessage())) { // what is this, anyway? - log.log(Level.WARNING, "Failure select()ing.", ioe); + log.warning("Failure select()ing.", ioe); } else { log.warning("Failure select()ing [ioe=" + ioe + "]."); } @@ -492,7 +491,7 @@ public class ConnectionManager extends LoopingThread // this block of code deals with a bug in the _selector that we observed on 2005-05-02, // instead of looping indefinitely after things go pear-shaped, shut us down in an // orderly fashion - log.log(Level.WARNING, "Failure select()ing.", re); + log.warning("Failure select()ing.", re); if (_runtimeExceptionCount++ >= 20) { log.warning("Too many errors, bailing."); shutdown(); @@ -532,7 +531,7 @@ public class ConnectionManager extends LoopingThread } } catch (Exception e) { - log.log(Level.WARNING, "Error processing network data: " + handler + ".", e); + log.warning("Error processing network data: " + handler + ".", e); // if you freak out here, you go straight in the can if (handler != null && handler instanceof Connection) { @@ -681,7 +680,7 @@ public class ConnectionManager extends LoopingThread try { return _datagramChannel.send(_databuf, target) > 0; } catch (IOException ioe) { - log.log(Level.WARNING, "Failed to send datagram.", ioe); + log.warning("Failed to send datagram.", ioe); return false; } } @@ -699,7 +698,7 @@ public class ConnectionManager extends LoopingThread protected void handleIterateFailure (Exception e) { // log the exception - log.log(Level.WARNING, "ConnectionManager.iterate() uncaught exception.", e); + log.warning("ConnectionManager.iterate() uncaught exception.", e); } // documentation inherited @@ -712,7 +711,7 @@ public class ConnectionManager extends LoopingThread try { _ssocket.socket().close(); } catch (IOException ioe) { - log.log(Level.WARNING, "Failed to close listening socket.", ioe); + log.warning("Failed to close listening socket.", ioe); } // and the datagram socket, if any @@ -752,7 +751,7 @@ public class ConnectionManager extends LoopingThread return; } -// log.fine("Accepted connection " + channel + "."); +// log.debug("Accepted connection " + channel + "."); // create a new authing connection object to manage the authentication of this client // connection and register it with our selection set @@ -767,7 +766,7 @@ public class ConnectionManager extends LoopingThread } catch (IOException ioe) { // no need to complain this happens in the normal course of events -// log.log(Level.WARNING, "Failure accepting new connection.", ioe); +// log.warning("Failure accepting new connection.", ioe); } // make sure we don't leak a socket if something went awry @@ -792,7 +791,7 @@ public class ConnectionManager extends LoopingThread try { source = (InetSocketAddress)listener.receive(_databuf); } catch (IOException ioe) { - log.log(Level.WARNING, "Failure receiving datagram.", ioe); + log.warning("Failure receiving datagram.", ioe); return 0; } @@ -873,7 +872,7 @@ public class ConnectionManager extends LoopingThread _outq.append(new Tuple(conn, data)); } catch (Exception e) { - log.log(Level.WARNING, "Failure flattening message [conn=" + conn + + log.warning("Failure flattening message [conn=" + conn + ", msg=" + msg + "].", e); } } diff --git a/src/java/com/threerings/presents/util/ClassUtil.java b/src/java/com/threerings/presents/util/ClassUtil.java index 8e0334fb8..e0368fa1c 100644 --- a/src/java/com/threerings/presents/util/ClassUtil.java +++ b/src/java/com/threerings/presents/util/ClassUtil.java @@ -27,7 +27,7 @@ import java.util.HashMap; import com.samskivert.util.MethodFinder; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; +import static com.threerings.presents.Log.log; /** * Class related utility functions. @@ -80,11 +80,11 @@ public class ClassUtil } catch (NoSuchMethodException nsme) { // nothing to do here but fall through and return null - Log.info("No such method [name=" + name + ", tclass=" + tclass.getName() + + log.info("No such method [name=" + name + ", tclass=" + tclass.getName() + ", args=" + StringUtil.toString(args) + ", error=" + nsme + "]."); } catch (SecurityException se) { - Log.warning("Unable to look up method? [tclass=" + tclass.getName() + + log.warning("Unable to look up method? [tclass=" + tclass.getName() + ", mname=" + name + "]."); } diff --git a/src/java/com/threerings/presents/util/IgnoreConfirmAdapter.java b/src/java/com/threerings/presents/util/IgnoreConfirmAdapter.java index 14d6ee5ea..4dd14318a 100644 --- a/src/java/com/threerings/presents/util/IgnoreConfirmAdapter.java +++ b/src/java/com/threerings/presents/util/IgnoreConfirmAdapter.java @@ -23,11 +23,12 @@ package com.threerings.presents.util; import com.samskivert.util.ResultListener; -import com.threerings.presents.Log; import com.threerings.presents.client.InvocationService; import com.threerings.presents.data.InvocationCodes; import com.threerings.presents.server.InvocationException; +import static com.threerings.presents.Log.log; + /** * Adapts the response from a {@link ResultListener} to a {@link ConfirmListener} wherein the * result is ignored. If the failure is an instance fo {@link InvocationException} the message will @@ -56,7 +57,7 @@ public class IgnoreConfirmAdapter implements ResultListener if (cause instanceof InvocationException) { _listener.requestFailed(cause.getMessage()); } else { - Log.logStackTrace(cause); + log.warning(cause); _listener.requestFailed(InvocationCodes.INTERNAL_ERROR); } } diff --git a/src/java/com/threerings/presents/util/PersistingUnit.java b/src/java/com/threerings/presents/util/PersistingUnit.java index c319546a8..1f7e123ef 100644 --- a/src/java/com/threerings/presents/util/PersistingUnit.java +++ b/src/java/com/threerings/presents/util/PersistingUnit.java @@ -21,8 +21,6 @@ package com.threerings.presents.util; -import java.util.logging.Level; - import com.samskivert.util.Invoker; import com.threerings.presents.client.InvocationService; @@ -73,7 +71,7 @@ public abstract class PersistingUnit extends Invoker.Unit if (error instanceof InvocationException) { _listener.requestFailed(error.getMessage()); } else { - log.log(Level.WARNING, getFailureMessage(), error); + log.warning(getFailureMessage(), error); _listener.requestFailed(InvocationCodes.INTERNAL_ERROR); } } diff --git a/src/java/com/threerings/presents/util/ResultAdapter.java b/src/java/com/threerings/presents/util/ResultAdapter.java index fadb85486..4626ab76a 100644 --- a/src/java/com/threerings/presents/util/ResultAdapter.java +++ b/src/java/com/threerings/presents/util/ResultAdapter.java @@ -23,11 +23,12 @@ package com.threerings.presents.util; import com.samskivert.util.ResultListener; -import com.threerings.presents.Log; import com.threerings.presents.client.InvocationService; import com.threerings.presents.data.InvocationCodes; import com.threerings.presents.server.InvocationException; +import static com.threerings.presents.Log.log; + /** * Adapts the response from a {@link ResultListener} to an InvocationService.ResultListener if the * failure is an instance of {@link InvocationException} the message will be passed on to the @@ -55,7 +56,7 @@ public class ResultAdapter implements ResultListener if (cause instanceof InvocationException) { _listener.requestFailed(cause.getMessage()); } else { - Log.logStackTrace(cause); + log.warning(cause); _listener.requestFailed(InvocationCodes.INTERNAL_ERROR); } } diff --git a/src/java/com/threerings/presents/util/SafeSubscriber.java b/src/java/com/threerings/presents/util/SafeSubscriber.java index d1b92da90..b2f9b307d 100644 --- a/src/java/com/threerings/presents/util/SafeSubscriber.java +++ b/src/java/com/threerings/presents/util/SafeSubscriber.java @@ -23,12 +23,13 @@ package com.threerings.presents.util; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; import com.threerings.presents.dobj.DObject; import com.threerings.presents.dobj.DObjectManager; import com.threerings.presents.dobj.ObjectAccessException; import com.threerings.presents.dobj.Subscriber; +import static com.threerings.presents.Log.log; + /** * A class that safely handles the asynchronous subscription to a * distributed object when it is not know if the subscription will @@ -73,7 +74,7 @@ public class SafeSubscriber public void subscribe (DObjectManager omgr) { if (_active) { - Log.warning("Active safesub asked to resubscribe " + this + "."); + log.warning("Active safesub asked to resubscribe " + this + "."); Thread.dumpStack(); return; } @@ -84,7 +85,7 @@ public class SafeSubscriber // make sure we dont have an object reference (which should be // logically impossible) if (_object != null) { - Log.warning("Incroyable! A safesub has an object and was " + + log.warning("Incroyable! A safesub has an object and was " + "non-active!? " + this + "."); Thread.dumpStack(); // make do in the face of insanity @@ -122,7 +123,7 @@ public class SafeSubscriber if (_object == null && !_pending) { return; } - Log.warning("Inactive safesub asked to unsubscribe " + this + "."); + log.warning("Inactive safesub asked to unsubscribe " + this + "."); Thread.dumpStack(); } @@ -132,7 +133,7 @@ public class SafeSubscriber if (_pending) { // make sure we don't have an object reference if (_object != null) { - Log.warning("Incroyable! A safesub has an object and is " + + log.warning("Incroyable! A safesub has an object and is " + "pending!? " + this + "."); Thread.dumpStack(); } else { @@ -144,7 +145,7 @@ public class SafeSubscriber // make sure we have our object if (_object == null) { - Log.warning("Zut alors! A safesub _was_ active and not " + + log.warning("Zut alors! A safesub _was_ active and not " + "pending yet has no object!? " + this + "."); Thread.dumpStack(); // nothing to do since we're apparently already unsubscribed @@ -161,13 +162,13 @@ public class SafeSubscriber { // make sure life is not too cruel if (_object != null) { - Log.warning("Madre de dios! Our object came available but " + + log.warning("Madre de dios! Our object came available but " + "we've already got one!? " + this); // go ahead and pitch the old one, God knows what's going on _object = null; } if (!_pending) { - Log.warning("J.C. on a pogo stick! Our object came available " + + log.warning("J.C. on a pogo stick! Our object came available " + "but we're not pending!? " + this); // go with our badselves, it's the only way } @@ -197,7 +198,7 @@ public class SafeSubscriber { // do the right thing with our pending state if (!_pending) { - Log.warning("Criminy creole! Our subscribe failed but we're " + + log.warning("Criminy creole! Our subscribe failed but we're " + "not pending!? " + this); // go with our badselves, it's the only way } diff --git a/src/java/com/threerings/util/MessageManager.java b/src/java/com/threerings/util/MessageManager.java index 03d554af7..21bd879da 100644 --- a/src/java/com/threerings/util/MessageManager.java +++ b/src/java/com/threerings/util/MessageManager.java @@ -72,7 +72,7 @@ public class MessageManager // use the default locale _locale = Locale.getDefault(); - log.fine("Using locale: " + _locale + "."); + log.debug("Using locale: " + _locale + "."); // make sure the prefix ends with a dot if (!_prefix.endsWith(".")) { diff --git a/tests/src/java/com/threerings/bureau/client/TestClient.java b/tests/src/java/com/threerings/bureau/client/TestClient.java index 62af5f916..32a0ca063 100644 --- a/tests/src/java/com/threerings/bureau/client/TestClient.java +++ b/tests/src/java/com/threerings/bureau/client/TestClient.java @@ -22,13 +22,14 @@ package com.threerings.bureau.client; import com.samskivert.util.OneLineLogFormatter; -import com.threerings.bureau.Log; import com.samskivert.util.Queue; import com.samskivert.util.StringUtil; import com.threerings.bureau.client.BureauDirector; import com.threerings.bureau.data.AgentObject; import com.samskivert.util.RunQueue; +import static com.threerings.bureau.Log.log; + /** * Extends bureau client minimally and provides a static main function to create a client and * connect to a server given by system properties. @@ -91,12 +92,12 @@ public class TestClient extends BureauClient { public void start () { - Log.info("Starting agent " + StringUtil.toString(_agentObj)); + log.info("Starting agent " + StringUtil.toString(_agentObj)); } public void stop () { - Log.info("Stopping agent " + StringUtil.toString(_agentObj)); + log.info("Stopping agent " + StringUtil.toString(_agentObj)); } } diff --git a/tests/src/java/com/threerings/bureau/server/RegistryTester.java b/tests/src/java/com/threerings/bureau/server/RegistryTester.java index f27d08ac2..2583a5c63 100644 --- a/tests/src/java/com/threerings/bureau/server/RegistryTester.java +++ b/tests/src/java/com/threerings/bureau/server/RegistryTester.java @@ -21,12 +21,15 @@ package com.threerings.bureau.server; -import com.samskivert.util.OneLineLogFormatter; -import com.google.common.collect.Lists; -import com.threerings.bureau.data.AgentObject; import java.util.List; import java.util.Random; +import com.google.common.collect.Lists; + +import com.threerings.bureau.data.AgentObject; + +import static com.threerings.bureau.Log.log; + /** * Uses a TestServer to pound on the BureauRegistry. Sends random sequences of * startAgent and destroyAgent. Most aspects of the randomness are configurable using system @@ -43,11 +46,11 @@ public class RegistryTester { String val = System.getProperty(name); if (val == null) { - TestServer.log.info("Property " + name + " is " + defaultVal); + log.info("Property " + name + " is " + defaultVal); return defaultVal; } int ival = Integer.parseInt(val); - TestServer.log.info("Property " + name + " is " + ival); + log.info("Property " + name + " is " + ival); return ival; } @@ -56,9 +59,6 @@ public class RegistryTester */ public static void main (String[] args) { - // make log pretty - OneLineLogFormatter.configureDefaultHandler(); - TestServer server = new TestServer(); RegistryTester tester = new RegistryTester(server); @@ -68,8 +68,7 @@ public class RegistryTester server.run(); } catch (Exception e) { - TestServer.log.warning("Unable to initialize server."); - TestServer.logStackTrace(e); + log.warning("Unable to initialize server.", e); } } @@ -95,7 +94,7 @@ public class RegistryTester // TODO: this is not called on Ctrl-C, need a way to shut down gracefully TestServer.registerShutdowner(new TestServer.Shutdowner() { public void shutdown () { - TestServer.log.info("Shutting down tests"); + log.info("Shutting down tests"); _stop = true; } }); @@ -110,9 +109,9 @@ public class RegistryTester Thread thread = new Thread("Registry test thread") { public void run () { - TestServer.log.info(getName() + " started"); + log.info(getName() + " started"); runTestThread(); - TestServer.log.info(getName() + " stopped"); + log.info(getName() + " stopped"); } }; thread.start(); @@ -139,17 +138,17 @@ public class RegistryTester _rng1 = new Random(seed); _rng2 = new Random(seed); - TestServer.log.info("Running tests, seed is " + seed); + log.info("Running tests, seed is " + seed); // runnable that generates N requests to create or destroy agents Runnable createOrDestroyAgents = new Runnable() { public void run () { int ops = 1 + _rng1.nextInt(_maxOps); - TestServer.log.info("Starting " + ops + " agent requests"); + log.info("Starting " + ops + " agent requests"); for (int i = 0; i < ops; ++i) { randomlyCreateOrDestroyAgent(); } - TestServer.log.info("Finished " + ops + " agent requests"); + log.info("Finished " + ops + " agent requests"); } }; @@ -188,13 +187,13 @@ public class RegistryTester if (size >= _maxAgents || (size != 0 && _rng1.nextInt(100) >= _createChance)) { AgentObject toRemove = _agents.remove(_rng1.nextInt(size)); - TestServer.log.info("Removing agent " + toRemove.getOid()); + log.info("Removing agent " + toRemove.getOid()); TestServer.breg.destroyAgent(toRemove); } else { AgentObject added = create(_rng1.nextInt(_numBureaus) + 1); _agents.add(added); - TestServer.log.info("Added agent " + added.getOid()); + log.info("Added agent " + added.getOid()); } } diff --git a/tests/src/java/com/threerings/bureau/server/TestServer.java b/tests/src/java/com/threerings/bureau/server/TestServer.java index c246f64f9..029f3af2e 100644 --- a/tests/src/java/com/threerings/bureau/server/TestServer.java +++ b/tests/src/java/com/threerings/bureau/server/TestServer.java @@ -22,36 +22,24 @@ package com.threerings.bureau.server; import com.threerings.presents.server.PresentsServer; -import com.samskivert.util.OneLineLogFormatter; -import java.util.logging.Level; -import java.util.logging.Logger; + +import static com.threerings.bureau.Log.log; /** * Extends a presents server to include a bureau registry. */ public class TestServer extends PresentsServer { - /** We dispatch our log messages through this logger. */ - public static Logger log = Logger.getLogger(TestServer.class.getName()); - /** * The bureau registry for the server. Will be null until init is called. */ public static BureauRegistry breg; - public static void logStackTrace (Throwable t) - { - log.log(Level.WARNING, t.getMessage(), t); - } - /** * Creates a new server and runs it. */ public static void main (String[] args) { - // make log pretty - OneLineLogFormatter.configureDefaultHandler(); - final TestServer server = new TestServer(); try { server.init(); @@ -59,8 +47,7 @@ public class TestServer extends PresentsServer server.run(); } catch (Exception e) { - log.warning("Unable to initialize server."); - logStackTrace(e); + log.warning("Unable to initialize server.", e); } } diff --git a/tests/src/java/com/threerings/crowd/client/JabberApp.java b/tests/src/java/com/threerings/crowd/client/JabberApp.java index 50ddcc021..dcdca9c06 100644 --- a/tests/src/java/com/threerings/crowd/client/JabberApp.java +++ b/tests/src/java/com/threerings/crowd/client/JabberApp.java @@ -30,7 +30,7 @@ import com.threerings.util.Name; import com.threerings.presents.client.Client; import com.threerings.presents.net.UsernamePasswordCreds; -import com.threerings.crowd.Log; +import static com.threerings.crowd.Log.log; /** * The main point of entry for the Jabber client application. It creates @@ -62,7 +62,7 @@ public class JabberApp Client client = _client.getContext().getClient(); // pass them on to the client - Log.info("Using [server=" + server + "]."); + log.info("Using [server=" + server + "]."); client.setServer(server, Client.DEFAULT_SERVER_PORTS); // configure the client with some credentials and logon @@ -96,8 +96,7 @@ public class JabberApp // initialize the app app.init(); } catch (IOException ioe) { - Log.warning("Error initializing application."); - Log.logStackTrace(ioe); + log.warning("Error initializing application.", ioe); } // and run it diff --git a/tests/src/java/com/threerings/crowd/client/TestClient.java b/tests/src/java/com/threerings/crowd/client/TestClient.java index fab6a41c8..7fb045b70 100644 --- a/tests/src/java/com/threerings/crowd/client/TestClient.java +++ b/tests/src/java/com/threerings/crowd/client/TestClient.java @@ -32,10 +32,11 @@ import com.threerings.presents.client.*; import com.threerings.presents.dobj.DObjectManager; import com.threerings.presents.net.*; -import com.threerings.crowd.Log; import com.threerings.crowd.chat.client.ChatDirector; import com.threerings.crowd.util.CrowdContext; +import static com.threerings.crowd.Log.log; + public class TestClient implements RunQueue, ClientObserver { @@ -89,7 +90,7 @@ public class TestClient public void clientDidLogon (Client client) { - Log.info("Client did logon [client=" + client + "]."); + log.info("Client did logon [client=" + client + "]."); // request to move to a place _ctx.getLocationDirector().moveTo(15); @@ -97,30 +98,30 @@ public class TestClient public void clientObjectDidChange (Client client) { - Log.info("Client object did change [client=" + client + "]."); + log.info("Client object did change [client=" + client + "]."); } public void clientFailedToLogon (Client client, Exception cause) { - Log.info("Client failed to logon [client=" + client + + log.info("Client failed to logon [client=" + client + ", cause=" + cause + "]."); } public void clientConnectionFailed (Client client, Exception cause) { - Log.info("Client connection failed [client=" + client + + log.info("Client connection failed [client=" + client + ", cause=" + cause + "]."); } public boolean clientWillLogoff (Client client) { - Log.info("Client will logoff [client=" + client + "]."); + log.info("Client will logoff [client=" + client + "]."); return true; } public void clientDidLogoff (Client client) { - Log.info("Client did logoff [client=" + client + "]."); + log.info("Client did logoff [client=" + client + "]."); System.exit(0); } diff --git a/tests/src/java/com/threerings/crowd/server/JabberServer.java b/tests/src/java/com/threerings/crowd/server/JabberServer.java index e8282812a..c3ca6756f 100644 --- a/tests/src/java/com/threerings/crowd/server/JabberServer.java +++ b/tests/src/java/com/threerings/crowd/server/JabberServer.java @@ -3,10 +3,11 @@ package com.threerings.crowd.server; -import com.threerings.crowd.Log; import com.threerings.crowd.data.JabberConfig; import com.threerings.crowd.data.PlaceObject; +import static com.threerings.crowd.Log.log; + /** * A basic server that creates a single room and sticks everyone in it * where they can chat with one another. @@ -30,8 +31,7 @@ public class JabberServer extends CrowdServer server.init(); server.run(); } catch (Exception e) { - Log.warning("Unable to initialize server."); - Log.logStackTrace(e); + log.warning("Unable to initialize server.", e); } } diff --git a/tests/src/java/com/threerings/presents/client/TestClient.java b/tests/src/java/com/threerings/presents/client/TestClient.java index 02dadb505..16fb194b6 100644 --- a/tests/src/java/com/threerings/presents/client/TestClient.java +++ b/tests/src/java/com/threerings/presents/client/TestClient.java @@ -28,11 +28,12 @@ import com.samskivert.util.RunQueue; import com.threerings.util.Name; -import com.threerings.presents.Log; import com.threerings.presents.data.TestObject; import com.threerings.presents.dobj.*; import com.threerings.presents.net.*; +import static com.threerings.presents.Log.log; + /** * A standalone test client. */ @@ -74,7 +75,7 @@ public class TestClient public void clientDidLogon (Client client) { - Log.info("Client did logon [client=" + client + "]."); + log.info("Client did logon [client=" + client + "]."); // register ourselves as a test notification receiver client.getInvocationDirector().registerReceiver(new TestDecoder(this)); @@ -89,10 +90,10 @@ public class TestClient three.add(5); service.test(client, "one", 2, three, new TestService.TestFuncListener() { public void testSucceeded (String one, int two) { - Log.info("Got test response [one=" + one + ", two=" + two + "]."); + log.info("Got test response [one=" + one + ", two=" + two + "]."); } public void requestFailed (String reason) { - Log.info("Urk! Request failed [reason=" + reason + "]."); + log.info("Urk! Request failed [reason=" + reason + "]."); } }); @@ -102,25 +103,25 @@ public class TestClient public void clientObjectDidChange (Client client) { - Log.info("Client object did change [client=" + client + "]."); + log.info("Client object did change [client=" + client + "]."); } public void clientDidLogoff (Client client) { - Log.info("Client did logoff [client=" + client + "]."); + log.info("Client did logoff [client=" + client + "]."); System.exit(0); } public void objectAvailable (TestObject object) { object.addListener(this); - Log.info("Object available: " + object); + log.info("Object available: " + object); object.setBar("lawl!"); } public void requestFailed (int oid, ObjectAccessException cause) { - Log.info("Object unavailable [oid=" + oid + + log.info("Object unavailable [oid=" + oid + ", reason=" + cause + "]."); // nothing to do, so might as well logoff _client.logoff(true); @@ -128,7 +129,7 @@ public class TestClient public void eventReceived (DEvent event) { - Log.info("Got event [event=" + event + "]."); + log.info("Got event [event=" + event + "]."); // request that we log off _client.logoff(true); @@ -144,13 +145,13 @@ public class TestClient // documentation inherited from interface public void requestFailed (String reason) { - Log.info("Urk! Request failed [reason=" + reason + "]."); + log.info("Urk! Request failed [reason=" + reason + "]."); } // documentation inherited from interface public void receivedTest (int one, String two) { - Log.info("Received test notification [one=" + one + + log.info("Received test notification [one=" + one + ", two=" + two + "]."); } diff --git a/tests/src/java/com/threerings/presents/server/DestroyedRefTest.java b/tests/src/java/com/threerings/presents/server/DestroyedRefTest.java index 407c49116..b49d6115b 100644 --- a/tests/src/java/com/threerings/presents/server/DestroyedRefTest.java +++ b/tests/src/java/com/threerings/presents/server/DestroyedRefTest.java @@ -24,10 +24,11 @@ package com.threerings.presents.server; import junit.framework.Test; import junit.framework.TestCase; -import com.threerings.presents.Log; import com.threerings.presents.data.TestObject; import com.threerings.presents.dobj.*; +import static com.threerings.presents.Log.log; + /** * Tests that the dobjmgr will not allow a destroyed object to be added to * an oid list. @@ -51,7 +52,7 @@ public class DestroyedRefTest extends TestCase // when we get the attribute change, we can exit if (event instanceof ObjectDestroyedEvent) { - Log.info("The upcoming object added event should be rejected."); + log.info("The upcoming object added event should be rejected."); } else if (event instanceof ObjectAddedEvent && toid == _objtwo.getOid()) { @@ -78,7 +79,7 @@ public class DestroyedRefTest extends TestCase // add object one to object two twice in a row to make sure repeated // adds don't result in the object being listed twice _objtwo.addToList(_objone.getOid()); - Log.info("The following addToList() should be ignored."); + log.info("The following addToList() should be ignored."); _objtwo.addToList(_objone.getOid()); // now that we have both objects, try to set up the reference. first diff --git a/tests/src/java/com/threerings/presents/server/TestManager.java b/tests/src/java/com/threerings/presents/server/TestManager.java index b6baf6fe9..6022a8e42 100644 --- a/tests/src/java/com/threerings/presents/server/TestManager.java +++ b/tests/src/java/com/threerings/presents/server/TestManager.java @@ -7,10 +7,11 @@ import java.util.ArrayList; import com.samskivert.util.StringUtil; -import com.threerings.presents.Log; import com.threerings.presents.client.TestService; import com.threerings.presents.data.ClientObject; +import static com.threerings.presents.Log.log; + /** * Implements the server side of the TestProvider interface. */ @@ -22,7 +23,7 @@ public class TestManager TestService.TestOidListener listener) throws InvocationException { - Log.info("Handling get test oid [src=" + caller + "]."); + log.info("Handling get test oid [src=" + caller + "]."); // issue a test notification just for kicks TestSender.sendTest(caller, 1, "two"); @@ -35,7 +36,7 @@ public class TestManager ArrayList three, TestService.TestFuncListener listener) throws InvocationException { - Log.info("Test request [one=" + one + ", two=" + two + + log.info("Test request [one=" + one + ", two=" + two + ", three=" + StringUtil.toString(three) + "]."); // and issue a response to this invocation request diff --git a/tests/src/java/com/threerings/presents/server/TestServer.java b/tests/src/java/com/threerings/presents/server/TestServer.java index 6a9a45d14..b8e673581 100644 --- a/tests/src/java/com/threerings/presents/server/TestServer.java +++ b/tests/src/java/com/threerings/presents/server/TestServer.java @@ -21,10 +21,11 @@ package com.threerings.presents.server; -import com.threerings.presents.Log; import com.threerings.presents.data.TestObject; import com.threerings.presents.dobj.*; +import static com.threerings.presents.Log.log; + public class TestServer extends PresentsServer { public static TestObject testobj; @@ -52,8 +53,7 @@ public class TestServer extends PresentsServer server.init(); server.run(); } catch (Exception e) { - Log.warning("Unable to initialize server."); - Log.logStackTrace(e); + log.warning("Unable to initialize server.", e); } } }