flex2.compiler.util.ConsoleLogger Maven / Gradle / Ivy
/*
*
* 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.
*
*/
package flex2.compiler.util;
//import flash.localization.LocalizationManager;
import flex2.compiler.ILocalizableMessage;
import flex2.compiler.Logger;
import flex2.compiler.io.FileUtil;
/**
* A Logger implementation that uses System.err and System.out to
* output messages.
*
* @author Clement Wong
*/
public class ConsoleLogger extends AbstractLogger implements Logger
{
private static final String lineSeparator = System.getProperty("line.separator");
public ConsoleLogger()
{
this(true, true, true, true);
}
public ConsoleLogger(boolean isInfoEnabled, boolean isDebugEnabled, boolean isWarningEnabled, boolean isErrorEnabled)
{
this.isInfoEnabled = isInfoEnabled;
this.isDebugEnabled = isDebugEnabled;
this.isWarningEnabled = isWarningEnabled;
this.isErrorEnabled = isErrorEnabled;
init(/*ThreadLocalToolkit.getLocalizationManager()*/);
}
private boolean isInfoEnabled, isDebugEnabled, isWarningEnabled, isErrorEnabled;
private int errorCount;
private int warningCount;
public int errorCount()
{
return errorCount;
}
public int warningCount()
{
return warningCount;
}
public void logInfo(String info)
{
if (!isInfoEnabled)
{
return;
}
printOut(info, false);
}
public void logDebug(String debug)
{
if (!isDebugEnabled)
{
return;
}
printOut(debug, false);
}
public void logWarning(String warning)
{
if (!isWarningEnabled)
{
return;
}
printWarning(WARNING + ": " + warning);
}
public void logError(String error)
{
if (!isErrorEnabled)
{
return;
}
printError(ERROR + ": " + error);
}
public void logInfo(String path, String info)
{
if (!isInfoEnabled)
{
return;
}
printOut(path + lineSeparator + lineSeparator + info);
}
public void logDebug(String path, String debug)
{
if (!isDebugEnabled)
{
return;
}
printOut(path + lineSeparator + lineSeparator + debug);
}
public void logWarning(String path, String warning)
{
if (!isWarningEnabled)
{
return;
}
printWarning(path + lineSeparator + lineSeparator + WARNING + ": " + warning);
}
public void logWarning(String path, String warning, int errorCode)
{
logWarning(path, warning);
}
public void logError(String path, String error)
{
if (!isErrorEnabled)
{
return;
}
printError(path + lineSeparator + lineSeparator + ERROR + ": " + error);
}
public void logError(String path, String error, int errorCode)
{
logError(path, error);
}
public void logInfo(String path, int line, String info)
{
if (!isInfoEnabled)
{
return;
}
printOut(path + "(" + line + "):" + " " + info);
}
public void logDebug(String path, int line, String debug)
{
if (!isDebugEnabled)
{
return;
}
printOut(path + "(" + line + "):" + " " + debug);
}
public void logWarning(String path, int line, String warning)
{
if (!isWarningEnabled)
{
return;
}
printWarning(path + "(" + line + "):" + " " + WARNING + ": " + warning + lineSeparator + lineSeparator + getLineText(path, line));
}
public void logWarning(String path, int line, String warning, int errorCode)
{
logWarning(path, line, warning);
}
public void logError(String path, int line, String error)
{
if (!isErrorEnabled)
{
return;
}
printError(path + "(" + line + "): " + " " + ERROR + ": " + error + lineSeparator + lineSeparator + getLineText(path, line));
}
public void logError(String path, int line, String error, int errorCode)
{
logError(path, line, error);
}
public void logInfo(String path, int line, int col, String info)
{
if (!isInfoEnabled)
{
return;
}
printOut(path + "(" + line + "): " + COL + ": " + col + " " + info);
}
public void logDebug(String path, int line, int col, String debug)
{
if (!isDebugEnabled)
{
return;
}
printOut(path + "(" + line + "): " + COL + ": " + col + " " + debug);
}
public void logWarning(String path, int line, int col, String warning)
{
if (!isWarningEnabled)
{
return;
}
// C: no source... must read from path...
String lineText = getLineText(path, line);
printWarning(path + "(" + line + "): " + COL + ": " + col + " " + WARNING + ": " + warning + lineSeparator + lineSeparator +
lineText + lineSeparator + getLinePointer(col, lineText));
}
public void log( ILocalizableMessage m)
{
log(m, null);
}
public void log( ILocalizableMessage m, String source)
{
if (m.getLevel() == ILocalizableMessage.ERROR)
{
if (!isErrorEnabled)
{
return;
}
}
else if (m.getLevel() == ILocalizableMessage.WARNING)
{
if (!isWarningEnabled)
{
return;
}
}
else
{
if (!isInfoEnabled)
{
return;
}
}
String prefix = formatPrefix( /*getLocalizationManager(),*/ m );
boolean found = true;
//LocalizationManager loc = getLocalizationManager();
String text = null; //loc.getLocalizedTextString( m );
if (text == null)
{
text = m.getClass().getName();
found = false;
}
String exText = formatExceptionDetail(m /*, loc*/);
if (m.getPath() != null && m.getLine() != -1)
{
exText += lineSeparator + lineSeparator + (source == null ? getLineText(m.getPath(), m.getLine()) : source);
}
if (m.getColumn() != -1)
{
exText += lineSeparator + getLinePointer(m.getColumn(), source);
}
if (m.getLevel() == ILocalizableMessage.INFO)
{
printOut(prefix + text + exText, false);
}
else if (m.getLevel() == ILocalizableMessage.WARNING)
{
printWarning(prefix + text + exText);
}
else
{
printError(prefix + text + exText);
}
assert found : "Localized text missing for " + m.getClass().getName();
}
public void logError(String path, int line, int col, String error)
{
if (!isErrorEnabled)
{
return;
}
// C: no source... must read from path...
String lineText = getLineText(path, line);
printError(path + "(" + line + "): " + COL + ": " + col + " " + ERROR + ": " + error + lineSeparator + lineSeparator +
lineText + lineSeparator + getLinePointer(col, lineText));
}
public void logWarning(String path, int line, int col, String warning, String source)
{
if (!isWarningEnabled)
{
return;
}
printWarning(path + "(" + line + "): " + COL + ": " + col + " " + WARNING + ": " + warning + lineSeparator + lineSeparator +
source + lineSeparator + getLinePointer(col, source));
}
public void logWarning(String path, int line, int col, String warning, String source, int errorCode)
{
logWarning(path, line, col, warning, source);
}
public void logError(String path, int line, int col, String error, String source)
{
if (!isErrorEnabled)
{
return;
}
printError(path + "(" + line + "): " + COL + ": " + col + " " + ERROR + ": " + error + lineSeparator + lineSeparator +
source + lineSeparator + getLinePointer(col, source));
}
public void logError(String path, int line, int col, String error, String source, int errorCode)
{
logError(path, line, col, error, source);
}
public void needsCompilation(String path, String reason)
{
printOut(RECOMPILE + ": " + path, false);
printOut(REASON + ": " + reason, false);
}
public void includedFileUpdated(String path)
{
printOut(INCLUDEUPDATED + ": " + path, false);
}
public void includedFileAffected(String path)
{
printOut(INCLUDEAFFECTED + ": " + path, false);
}
private void printOut(String message)
{
printOut(message, true);
}
private void printOut(String message, boolean extraLineBreak)
{
System.out.println(message + (extraLineBreak ? lineSeparator : ""));
}
private void printWarning(String message)
{
warningCount++;
System.err.println(message + lineSeparator);
if (message == null)
{
Thread.dumpStack();
}
}
private void printError(String message)
{
errorCount++;
System.err.println(message + lineSeparator);
if (message == null)
{
Thread.dumpStack();
}
}
private String getLineText(String path, int line)
{
String text = FileUtil.readLine(path, line);
return text == null ? "" : text;
}
private String getLinePointer(int col, String source)
{
if (col <= 0) // col == 0 is likely an error...
{
return "^";
}
StringBuilder b = new StringBuilder(col);
for (int i = 0; i < col - 1; i++)
{
if (source != null && i < source.length() && source.charAt(i) == '\t')
{
b.append('\t');
}
else
{
b.append(' ');
}
}
b.append('^');
return b.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy