001package org.apache.maven.plugin.logging;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *  http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import java.io.PrintWriter;
023import java.io.StringWriter;
024
025/**
026 * Logger with "standard" output and error output stream.
027 *
028 * @author jdcasey
029 */
030public class SystemStreamLog
031    implements Log
032{
033    /**
034     * @see org.apache.maven.plugin.logging.Log#debug(java.lang.CharSequence)
035     */
036    public void debug( CharSequence content )
037    {
038        print( "debug", content );
039    }
040
041    /**
042     * @see org.apache.maven.plugin.logging.Log#debug(java.lang.CharSequence, java.lang.Throwable)
043     */
044    public void debug( CharSequence content, Throwable error )
045    {
046        print( "debug", content, error );
047    }
048
049    /**
050     * @see org.apache.maven.plugin.logging.Log#debug(java.lang.Throwable)
051     */
052    public void debug( Throwable error )
053    {
054        print( "debug", error );
055    }
056
057    /**
058     * @see org.apache.maven.plugin.logging.Log#info(java.lang.CharSequence)
059     */
060    public void info( CharSequence content )
061    {
062        print( "info", content );
063    }
064
065    /**
066     * @see org.apache.maven.plugin.logging.Log#info(java.lang.CharSequence, java.lang.Throwable)
067     */
068    public void info( CharSequence content, Throwable error )
069    {
070        print( "info", content, error );
071    }
072
073    /**
074     * @see org.apache.maven.plugin.logging.Log#info(java.lang.Throwable)
075     */
076    public void info( Throwable error )
077    {
078        print( "info", error );
079    }
080
081    /**
082     * @see org.apache.maven.plugin.logging.Log#warn(java.lang.CharSequence)
083     */
084    public void warn( CharSequence content )
085    {
086        print( "warn", content );
087    }
088
089    /**
090     * @see org.apache.maven.plugin.logging.Log#warn(java.lang.CharSequence, java.lang.Throwable)
091     */
092    public void warn( CharSequence content, Throwable error )
093    {
094        print( "warn", content, error );
095    }
096
097    /**
098     * @see org.apache.maven.plugin.logging.Log#warn(java.lang.Throwable)
099     */
100    public void warn( Throwable error )
101    {
102        print( "warn", error );
103    }
104
105    /**
106     * @see org.apache.maven.plugin.logging.Log#error(java.lang.CharSequence)
107     */
108    public void error( CharSequence content )
109    {
110        System.err.println( "[error] " + content.toString() );
111    }
112
113    /**
114     * @see org.apache.maven.plugin.logging.Log#error(java.lang.CharSequence, java.lang.Throwable)
115     */
116    public void error( CharSequence content, Throwable error )
117    {
118        StringWriter sWriter = new StringWriter();
119        PrintWriter pWriter = new PrintWriter( sWriter );
120
121        error.printStackTrace( pWriter );
122
123        System.err.println( "[error] " + content.toString() + "\n\n" + sWriter.toString() );
124    }
125
126    /**
127     * @see org.apache.maven.plugin.logging.Log#error(java.lang.Throwable)
128     */
129    public void error( Throwable error )
130    {
131        StringWriter sWriter = new StringWriter();
132        PrintWriter pWriter = new PrintWriter( sWriter );
133
134        error.printStackTrace( pWriter );
135
136        System.err.println( "[error] " + sWriter.toString() );
137    }
138
139    /**
140     * @see org.apache.maven.plugin.logging.Log#isDebugEnabled()
141     */
142    public boolean isDebugEnabled()
143    {
144        // TODO: Not sure how best to set these for this implementation...
145        return false;
146    }
147
148    /**
149     * @see org.apache.maven.plugin.logging.Log#isInfoEnabled()
150     */
151    public boolean isInfoEnabled()
152    {
153        return true;
154    }
155
156    /**
157     * @see org.apache.maven.plugin.logging.Log#isWarnEnabled()
158     */
159    public boolean isWarnEnabled()
160    {
161        return true;
162    }
163
164    /**
165     * @see org.apache.maven.plugin.logging.Log#isErrorEnabled()
166     */
167    public boolean isErrorEnabled()
168    {
169        return true;
170    }
171
172    private void print( String prefix, CharSequence content )
173    {
174        System.out.println( "[" + prefix + "] " + content.toString() );
175    }
176
177    private void print( String prefix, Throwable error )
178    {
179        StringWriter sWriter = new StringWriter();
180        PrintWriter pWriter = new PrintWriter( sWriter );
181
182        error.printStackTrace( pWriter );
183
184        System.out.println( "[" + prefix + "] " + sWriter.toString() );
185    }
186
187    private void print( String prefix, CharSequence content, Throwable error )
188    {
189        StringWriter sWriter = new StringWriter();
190        PrintWriter pWriter = new PrintWriter( sWriter );
191
192        error.printStackTrace( pWriter );
193
194        System.out.println( "[" + prefix + "] " + content.toString() + "\n\n" + sWriter.toString() );
195    }
196}