假設使用java.util.logging.*
,在myLogger.entering(...)
和myLogger.exiting(...)
中使用什麼適當的參數?如果這些始終應該是源類名稱和源方法名稱,那麼爲什麼方法不會找到信息本身,而不是向我們詢問它?方法文檔說:Java記錄器的輸入/退出方法中的參數
這是一種方便的方法,可用於記錄方法的入口。記錄消息「ENTRY」,日誌級別FINER和給定sourceMethod和sourceClass的LogRecord。
這是一種方便的方法,可用於從方法中記錄返回。記錄帶有消息「RETURN」,日誌級別FINER以及給定sourceMethod和sourceClass的LogRecord。
如果我們簡單地硬編碼的方法名,即使用" "
?我可能不正確的理由是,如果我的getMethodName()
做的是可以接受的重度使用,那麼日誌系統會自己做,而不是要求我們的方法名稱。
private static void methodNine() {
logger.entering(LogTest.class.getName(), getMethodName());
logger.exiting(LogTest.class.getName(), "sourceMethod"); // sourceMethod=?
}
/** @return The current method name. */
private static String getMethod() {
return Thread.currentThread().getStackTrace()[2].getMethodName();
//[0]=getStackTrace, [1]=getMethod, [2]=<method name we're looking for>
}