Java日志工具中获取文件信息的原理

主要是通过实例化一个Throwable类(或其子类)的对象 ,通过这个对象获取方法调用的堆栈信息来实现的。下面是一段简单的示例代码:

public   class  Debug {
   
    
private static String buildLogMessage(String message){
        StackTraceElement trace 
= null;
       
        StackTraceElement traces[] 
= (new Throwable()).getStackTrace();
        
for(int i=0; i<traces.length; i++){
            
if(!traces[i].getClassName().equals(Debug.class.getName())){
                trace 
= traces[i];
                
break;
            }

        }

       
        String msg 
= message + " # "
                
+ trace.getClassName() + "."
                
+ trace.getMethodName();
        
if(trace.getFileName() != null){
            msg 
+= "(" + trace.getFileName() + ":"
                
+ trace.getLineNumber() + ")";
        }
else
            msg 
+= "(No detailed source file information)";
       
        Date date 
= new Date();
           
        msg 
= "[" + (date.getYear() + 1900+ "/" + (date.getMonth() + 1)
                    
+ "/" + date.getDate() + " " + date.getHours() + ":"
                    
+ date.getMinutes() + ":" + date.getSeconds() + "" + msg;
       
        
return msg;
    }

   
    
public static void info(String message){
        printMessage(
"[INFO]" + buildLogMessage(message));
    }

   
    
public static void warning(String message){
        printMessage(
"[WARNING]" + buildLogMessage(message));
    }

   
    
public static void error(String message){
        printMessage(
"[ERROR]" + buildLogMessage(message));
    }

   
    
private static void printMessage(String message){
        System.out.println(message);
    }

}

:-)其实就这个简单。如果平时注意观察Exception类的printStackTrace()方法的输出结果,你也能想到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值