Source for gnu.inet.util.Logger

   1: /*
   2:  * Logger.java
   3:  * Copyright (C) 2003 The Free Software Foundation
   4:  * 
   5:  * This file is part of GNU inetlib, a library.
   6:  * 
   7:  * GNU inetlib is free software; you can redistribute it and/or modify
   8:  * it under the terms of the GNU General Public License as published by
   9:  * the Free Software Foundation; either version 2 of the License, or
  10:  * (at your option) any later version.
  11:  * 
  12:  * GNU inetlib is distributed in the hope that it will be useful,
  13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15:  * GNU General Public License for more details.
  16:  * 
  17:  * You should have received a copy of the GNU General Public License
  18:  * along with this library; if not, write to the Free Software
  19:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20:  *
  21:  * Linking this library statically or dynamically with other modules is
  22:  * making a combined work based on this library.  Thus, the terms and
  23:  * conditions of the GNU General Public License cover the whole
  24:  * combination.
  25:  *
  26:  * As a special exception, the copyright holders of this library give you
  27:  * permission to link this library with independent modules to produce an
  28:  * executable, regardless of the license terms of these independent
  29:  * modules, and to copy and distribute the resulting executable under
  30:  * terms of your choice, provided that you also meet, for each linked
  31:  * independent module, the terms and conditions of the license of that
  32:  * module.  An independent module is a module which is not derived from
  33:  * or based on this library.  If you modify this library, you may extend
  34:  * this exception to your version of the library, but you are not
  35:  * obliged to do so.  If you do not wish to do so, delete this
  36:  * exception statement from your version.
  37:  */
  38: 
  39: package gnu.inet.util;
  40: 
  41: /**
  42:  * Provides a simple logging mechanism for GNU inetlib and providers.
  43:  * It is not possible to use the java.logging API as this doesn't exist
  44:  * prior to Java 1.4.
  45:  *
  46:  * @author <a href="mailto:dog@gnu.org">Chris Burdess</a>
  47:  */
  48: public abstract class Logger
  49: {
  50: 
  51:   /**
  52:    * The singleton instance of this class.
  53:    */
  54:   private static Logger instance = new StderrLogger();
  55: 
  56:   /**
  57:    * Returns the singleton instance of this class.
  58:    */
  59:   public static Logger getInstance()
  60:   {
  61:     return instance;
  62:   }
  63: 
  64:   /**
  65:    * Sets the singleton instance of this class.
  66:    * @param logger the new logger to use
  67:    */
  68:   public static void setInstance(Logger logger)
  69:   {
  70:     if (logger == null)
  71:       {
  72:         throw new NullPointerException();
  73:       }
  74:     instance = logger;
  75:   }
  76: 
  77:   /**
  78:    * Logs a configuration message.
  79:    * This is used by the inetlib implementation itself.
  80:    * @param message the message
  81:    */
  82:   public abstract void config(String message);
  83: 
  84:   /**
  85:    * Logs a provider-specific debugging message.
  86:    * @param protocol the provider protocol
  87:    * @param message the message
  88:    */
  89:   public abstract void log(String protocol, String message);
  90: 
  91:   /**
  92:    * Logs an error.
  93:    * @param protocol the provider protocol
  94:    * @param message the message
  95:    */
  96:   public abstract void error(String protocol, Throwable t);
  97: 
  98: }