Vì mục đích ghi nhật ký, tôi đã tạo phương thức logTitle() để in ra tên phương thức gọi cho các bài kiểm tra TestNG của chúng tôi. Mã mẫu dưới đây.Nhận các kết quả khác nhau cho getStackTrace() [2] .getMethodName()
@Test
public void test1() throws Exception {
method1();
}
public static void method1() throws Exception {
Utils.logTitle(2);
}
...
public static void logTitle(Integer level) throws Exception {
// Gets calling method name
String method = Thread.currentThread().getStackTrace()[2].getMethodName();
// This would get current method name
switch (level) {
case 1:
logger.info("=======================================================");
logger.info(method);
logger.info("=======================================================");
break;
case 2:
logger.info("------------------------------------");
logger.info(method);
logger.info("------------------------------------");
break;
case 3:
logger.info("---------------------");
logger.info(method);
logger.info("---------------------");
break;
case 4:
logger.info("--------- " + method + " ------------");
break;
default:
logger.info(method);
}
}
Vấn đề là tôi nhận được kết quả khác nhau cho logTitle() trên hai máy khác nhau. máy tính xách tay
của mọi người trở về một cách chính xác:
2016-06-20 14:22:06 INFO - ------------------------------------
2016-06-20 14:22:06 INFO - method1
2016-06-20 14:22:06 INFO - ------------------------------------
chúng tôi dev unix hộp lợi nhuận khác nhau:
2016-06-20 14:42:26 INFO - ------------------------------------
2016-06-20 14:42:26 INFO - logTitle
2016-06-20 14:42:26 INFO - ------------------------------------
này hoạt động một cách chính xác trên máy tính xách tay tất cả mọi người khác, chỉ cần không phải là dev unix hộp. Tôi nghĩ rằng hộp dev unix đang sử dụng phiên bản Java của IBM, trong khi mọi người khác đang sử dụng phiên bản Java của Oracle, nhưng không chắc liệu đó có phải là thủ phạm hay không.
Bất kỳ ý tưởng nào?
có thể có một số nội tuyến phương pháp1 đang diễn ra? – MeBigFatGuy
Làm thế nào để in toàn bộ dấu vết ngăn xếp (không chỉ tên phương thức của phần tử thứ 3), và thấy sự khác biệt là gì? –
Tôi nghi ngờ rằng [câu trả lời này] (http://stackoverflow.com/a/1069150/3788176) và nhận xét của nó sẽ giúp bạn. –