實現原理:
java.lang.Throwable類可以實時獲取當前調用棧每一層調用的詳細信息,包括文件名、類名、方法名和行號。
示例代碼:
public class LocalLog {
public static void log(String log){
StackTraceElement[] stacks = new Throwable().getStackTrace();
StackTraceElement stack1 = stacks[1];
System.out.println("LOG POINT@"
+ "filename:"+stack1.getFileName()
+ ",classname:"+stack1.getClassName()
+ "methodname:"+stack1.getMethodName()
+ "lineno:"+stack1.getLineNumber());
System.out.println("LOG INFO:"+log);
}
public static void main(String[] args){
LocalLog.log("this is a test!");
}
}
main方法執行結果:
LOG POINT@filename:LocalLog.java,classname:figo.fileParse.LocalLogmethodname:mainlineno:19
LOG INFO:this is a test!