You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/08/14 13:17:27 UTC

svn commit: r804164 - in /maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder: MavenEmbedderConsoleLogger.java MavenEmbedderFileLogger.java MavenEmbedderPrintStreamLogger.java

Author: bentmann
Date: Fri Aug 14 11:17:27 2009
New Revision: 804164

URL: http://svn.apache.org/viewvc?rev=804164&view=rev
Log:
o Fixed file logger to properly log exception stack traces

Added:
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java   (with props)
Modified:
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConsoleLogger.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderFileLogger.java

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConsoleLogger.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConsoleLogger.java?rev=804164&r1=804163&r2=804164&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConsoleLogger.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConsoleLogger.java Fri Aug 14 11:17:27 2009
@@ -1,4 +1,6 @@
-package org.apache.maven.embedder;/*
+package org.apache.maven.embedder;
+
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -25,84 +27,12 @@
  * @author <a href="mailto:dev@avalon.codehaus.org">Avalon Development Team</a>
  */
 public final class MavenEmbedderConsoleLogger
-    extends AbstractMavenEmbedderLogger
+    extends MavenEmbedderPrintStreamLogger
 {
-    public void debug( String message,
-                       Throwable throwable )
-    {
-        if ( isDebugEnabled() )
-        {
-            System.out.print( "[DEBUG] " );
-            System.out.println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
-    }
-
-    public void info( String message,
-                      Throwable throwable )
-    {
-        if ( isInfoEnabled() )
-        {
-            System.out.print( "[INFO] " );
-            System.out.println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
-    }
 
-    public void warn( String message,
-                      Throwable throwable )
+    public MavenEmbedderConsoleLogger()
     {
-        if ( isWarnEnabled() )
-        {
-            System.out.print( "[WARNING] " );
-            System.out.println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
+        super( System.out );
     }
 
-    public void error( String message,
-                       Throwable throwable )
-    {
-        if ( isErrorEnabled() )
-        {
-            System.out.print( "[ERROR] " );
-            System.out.println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
-    }
-
-    public void fatalError( String message,
-                            Throwable throwable )
-    {
-        if ( isFatalErrorEnabled() )
-        {
-            System.out.print( "[ERROR] " );
-            System.out.println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
-    }
-
-    public void close()
-    {
-    }
 }

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderFileLogger.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderFileLogger.java?rev=804164&r1=804163&r2=804164&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderFileLogger.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderFileLogger.java Fri Aug 14 11:17:27 2009
@@ -20,122 +20,32 @@
  */
 
 import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
+import java.io.FileNotFoundException;
+import java.io.PrintStream;
 
 /**
  * @author Jason van Zyl
  * @todo document the need to call close() once successfully constructed, otherwise file handles can be leaked. Might be good to add a finalizer too, just in case.
  */
 public final class MavenEmbedderFileLogger
-    extends AbstractMavenEmbedderLogger
+    extends MavenEmbedderPrintStreamLogger
 {
-    private PrintWriter log;
 
     public MavenEmbedderFileLogger( File logFile )
     {
-        try
-        {
-            this.log = new PrintWriter( new FileWriter( logFile ) ); // platform encoding
-        }
-        catch ( IOException e )
-        {
-            // The client must make sure the file is valid.
-            // TODO: [BP] would just throwing the IOE be better? We can't just ignore it, since that would give misleading NPE's later
-            throw new RuntimeException( "The embedder was unable to write to the specified log file: " + logFile, e );
-        }
-    }
-
-    public void debug( String message,
-                       Throwable throwable )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "[DEBUG] " );
-            println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
-    }
-
-    public void info( String message,
-                      Throwable throwable )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "[INFO] " );
-            println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
-    }
-
-    public void warn( String message,
-                      Throwable throwable )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "[WARNING] " );
-            println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
-        }
+        super( openStream( logFile ) );
     }
 
-    public void error( String message,
-                       Throwable throwable )
+    private static PrintStream openStream( File logFile )
     {
-        if ( isErrorEnabled() )
+        try
         {
-            print( "[ERROR] " );
-            println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
+            return new PrintStream( logFile );
         }
-    }
-
-    public void fatalError( String message,
-                            Throwable throwable )
-    {
-        if ( isFatalErrorEnabled() )
+        catch ( FileNotFoundException e )
         {
-            print( "[ERROR] " );
-            println( message );
-
-            if ( null != throwable )
-            {
-                throwable.printStackTrace( System.out );
-            }
+            throw new IllegalArgumentException( "Cannot open specified log file " + logFile, e );
         }
     }
 
-    protected void print( String message )
-    {
-        log.print( message );
-    }
-
-    protected void println( String message )
-    {
-        log.println( message );
-    }
-
-    public void close()
-    {
-        log.flush();
-
-        log.close();
-    }
 }

Added: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java?rev=804164&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java (added)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java Fri Aug 14 11:17:27 2009
@@ -0,0 +1,137 @@
+package org.apache.maven.embedder;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.PrintStream;
+
+/**
+ * Logs to a user-supplied {@link PrintStream}.
+ * 
+ * @author Benjamin Bentmann
+ */
+public class MavenEmbedderPrintStreamLogger
+    extends AbstractMavenEmbedderLogger
+{
+
+    private final PrintStream out;
+
+    private static final String FATAL_ERROR = "[FATAL] ";
+
+    private static final String ERROR = "[ERROR] ";
+
+    private static final String WARNING = "[WARNING] ";
+
+    private static final String INFO = "[INFO] ";
+
+    private static final String DEBUG = "[DEBUG] ";
+
+    public MavenEmbedderPrintStreamLogger( PrintStream out )
+    {
+        if ( out == null )
+        {
+            throw new IllegalArgumentException( "output stream missing" );
+        }
+
+        this.out = out;
+    }
+
+    public void debug( String message, Throwable throwable )
+    {
+        if ( isDebugEnabled() )
+        {
+            out.print( DEBUG );
+            out.println( message );
+
+            if ( null != throwable )
+            {
+                throwable.printStackTrace( out );
+            }
+        }
+    }
+
+    public void info( String message, Throwable throwable )
+    {
+        if ( isInfoEnabled() )
+        {
+            out.print( INFO );
+            out.println( message );
+
+            if ( null != throwable )
+            {
+                throwable.printStackTrace( out );
+            }
+        }
+    }
+
+    public void warn( String message, Throwable throwable )
+    {
+        if ( isWarnEnabled() )
+        {
+            out.print( WARNING );
+            out.println( message );
+
+            if ( null != throwable )
+            {
+                throwable.printStackTrace( out );
+            }
+        }
+    }
+
+    public void error( String message, Throwable throwable )
+    {
+        if ( isErrorEnabled() )
+        {
+            out.print( ERROR );
+            out.println( message );
+
+            if ( null != throwable )
+            {
+                throwable.printStackTrace( out );
+            }
+        }
+    }
+
+    public void fatalError( String message, Throwable throwable )
+    {
+        if ( isFatalErrorEnabled() )
+        {
+            out.print( FATAL_ERROR );
+            out.println( message );
+
+            if ( null != throwable )
+            {
+                throwable.printStackTrace( out );
+            }
+        }
+    }
+
+    public void close()
+    {
+        if ( out == System.out || out == System.err )
+        {
+            out.flush();
+        }
+        else
+        {
+            out.close();
+        }
+    }
+
+}

Propchange: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderPrintStreamLogger.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision