apiv1

import java.text.MessageFormat;

public class LogUtil {

    /**
     * print current method stack
     */
    public static String getStackTrace() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        if(stackTrace == null) {
            return "no stack...";
        }
        StringBuffer stackTraceSB = new StringBuffer();
        for(int i = 2; i < stackTrace.length; i ++) {
            StackTraceElement stackTraceElement = stackTrace[i];
            if(stackTraceSB.length() > 0) {
                stackTraceSB.append(" <- ");
                stackTraceSB.append(System.getProperty("line.separator"));
            }
            stackTraceSB.append(MessageFormat.format("{0}{1}.{2}() {3}:{4}"
                    ,stackTraceElement.isNativeMethod() ? "native ": ""
                    ,stackTraceElement.getClassName()
                    ,stackTraceElement.getMethodName()
                    ,stackTraceElement.getFileName()
                    ,stackTraceElement.getLineNumber()));
        }
        return stackTraceSB.toString();
    }
}