     }
 
     /**
+     * Set the log level for the specified package/file.
+     *
+     * @param spec The smallest prefix desired to configure a log level.
+     * For example, you can set the global level with Log.setLevel("", Log.INFO);
+     * Then you can Log.setLevel("com.foo.game", Log.DEBUG). Now, everything
+     * logs at INFO level except for classes within com.foo.game, which is at DEBUG.
+     */
+    public static function setLevel (spec :String, level :int) :void
+    {
+        _setLevels[spec] = level;
+        resetLevels();
+    }
+
+    /**
+     * Parses a String in the form of ":info;com.foo.game:debug;com.bar.util:warning"
+     *
+     * Semicolons separate modules, colons separate a module name from the log level.
+     * An empty string specifies the top-level (global) module.
+     */
+    public static function setLevels (settingString :String) :void
+    {
+        for (var module :String in settingString.split(";")) {
+            var setting :Array = module.split(":");
+            _setLevels[setting[0]] = stringToLevel(String(setting[1]));
+        }
+        resetLevels();
+    }
+
+    /**
      * @private
      */
     public function Log (spec :String)
     {
+        if (spec == null) { // what!?
+            spec = "";
+        }
         _spec = spec;
     }
 

     */
    public function info (... messages) :void
    {
        doLog("[INFO]", messages);
    }

    /**

     */
    public function warning (... messages) :void
    {
        doLog(WARNING, messages);
    }

    /**
