title: Benefits of Log4j singleton wrapper?
body: <p>I have recently inherited some Java code and need to integrate it into a project that I am working on.  My project is a service agent that processes and transforms XML messages.  While looking through the new code, I discovered the following logging class:   </p>
  
  <pre><code>import org.apache.log4j.BasicConfigurator;
  import org.apache.log4j.Level;
  import org.apache.log4j.Logger;
  
  public class MyLogger {
  
      private static MyLogger instance = null;
      protected final static Logger log = Logger.getLogger(MyLogger.class);
  
      private MyLogger() {
          super();
      }
  
      public static MyLogger getInstance(){
          if(instance  == null){
              instance  = new MyLogger();
              BasicConfigurator.configure();
              log.setLevel(Level.ALL);
          }
          return instance;
      }
  
      public void info(String myclass, String msg) {
          log.info("[" + myclass + "] " + msg);
  
      }
  
      public void error(String myclass, String msg, Exception ce) {               
          log.error("[" + myclass + "] " + msg, ce);      
      }
  
      public void warning(String myclass, String msg) {
          log.warn("[" + myclass + "] " + msg);
      }    
  }
  </code></pre>
  
  <p>This class basically wraps log4j with (another) singleton.  All of the logging in the classes that I need to integrate look something like this:</p>
  
  <pre><code>public class MyClass {
     private final static MyLogger log = MyLogger.getInstance();
     private final static String myclass = MyClass.class.getName();
  
     ...
  
     log.info(myclass, "Information message...");   
  }
  </code></pre>
  
  <p>I do not see any obvious benefit to using an extra class for logging, thus I am considering refactoring this code to remove the MyLogger class and log in the following fashion:</p>
  
  <pre><code>import org.apache.log4j.Logger;
  
  public class MyClass {
     private static Logger log = Logger.getLogger(MyClass.class);
  
     ...
  
     log.info("Information Message...");     
  }
  </code></pre>
  
  <p>This would make the logging mechanism consistent across the project.  Before I do this, I would like to know if there are any benefits to wrapping Log4j with a singleton class that I may be missing.  Thanks!    </p>
  
  <p><strong>EDIT:</strong> Thanks everyone for the helpful answers - I pickup up several new insights from each.  Accepted Nathan Hughes' answer for pointing out lost functionality by leaving the class intact - I had been assuming that the biggest downside to leaving the singleton alone was simply code bloat.  I will trash the class. </p>