001    package org.bukkit.plugin;
002    
003    import java.util.logging.Level;
004    import java.util.logging.LogRecord;
005    import java.util.logging.Logger;
006    
007    /**
008     * The PluginLogger class is a modified {@link Logger} that prepends all
009     * logging calls with the name of the plugin doing the logging. The API for
010     * PluginLogger is exactly the same as {@link Logger}.
011     *
012     * @see Logger
013     */
014    public class PluginLogger extends Logger {
015        private String pluginName;
016    
017        /**
018         * Creates a new PluginLogger that extracts the name from a plugin.
019         *
020         * @param context A reference to the plugin
021         */
022        public PluginLogger(Plugin context) {
023            super(context.getClass().getCanonicalName(), null);
024            String prefix = context.getDescription().getPrefix();
025            pluginName = prefix != null ? new StringBuilder().append("[").append(prefix).append("] ").toString() : "[" + context.getDescription().getName() + "] ";
026            setParent(context.getServer().getLogger());
027            setLevel(Level.ALL);
028        }
029    
030        @Override
031        public void log(LogRecord logRecord) {
032            logRecord.setMessage(pluginName + logRecord.getMessage());
033            super.log(logRecord);
034        }
035    
036    }