아날로그log4j에서 로그 대상이 호출된 클래스 이름, 방법 이름, 줄 번호를 가져옵니다
7160 단어 J2EE
사실 우리는 이렇게 로그 코드를 쓸 때 현재의 루틴 정보를 얻을 수 있다. 그러면 우리는 이전 루틴의 정보를 얻을 수 있다. (즉 대상이 로그를 쓰는 클래스의 정보)
먼저 아래의 열을 보아라.
새 Location 클래스 및 Test 클래스:
Location:
public class Location {
public void getInfo(){
String location="";
StackTraceElement[] stacks = Thread.currentThread().getStackTrace();
location = " :"+stacks[2].getClassName() + "
:" + stacks[2].getMethodName()
+ "
:" + stacks[2].getFileName() + "
:"
+ stacks[2].getLineNumber() + "";
System.out.println(location);
}
}
Test:
public class Test {
public static void main(String[] args) {
Location l = new Location();
l.getInfo();
}
}
Test의 main 함수를 실행하면 다음과 같은 결과가 발생합니다.
:thread.Test
:main
:Test.java
:10
Test 클래스에서 호출된 정보를 출력하지 않았습니까?그렇다면 많은 사람들이 왜 location류에서 stacts[2]를 사용하는 것이지 stacts[0]나 다른 것을 사용하는 것이 아니냐고 물었다.
이 문제에 대하여 우리는 Stacts수 그룹 안의 물건을 두루 출력하면 알 수 있다.
StackTraceElement[] stacks = Thread.currentThread().getStackTrace();
for(int i=0;i<stacks.length;i++){
location = i+" at "+stacks[i].getClassName() + "." + stacks[i].getMethodName()
+ "(" + stacks[i].getFileName() + ":"
+ stacks[i].getLineNumber() + ")";
System.out.println(location);
}
다시 실행합니다. 출력 결과는 다음과 같습니다.
0 at java.lang.Thread.getStackTrace(Thread.java:1436)
1 at thread.Location.getInfo(Location.java:6)
2 at thread.Test.main(Test.java:7)
그럼 이해가 돼요. 라인은 창고 형식으로 저장되어 있고,
StackTraceElement[] Stacks = Thread를 분석해 보십시오.currentThread().getStackTrace();
이 코드에는 Thread를 호출하는 2개의 스레드가 생성됩니다.currentThread().StackTrace () 는 밑에 라인을 만들 것입니다. 우리가 그것을 호출하면 라인을 만들 것입니다. 그리고 테스트가 getInfo 함수를 호출할 때 라인을 만들 것입니다. 그러면 총 세 개의 라인이 생성됩니다. 프로그램의 실행 순서는 테스트 클래스에서 getInfo 방법을 호출한 다음에 getInfo 방법에서 StackTraceElement [] stacks = Thread입니다.currentThread().getStackTrace();StackTraceElement[] Stacks = Thread를 호출합니다.currentThread().getStackTrace();밑바닥에 라인을 만들 때 창고의 원리에 따라 선진적인 후출 규칙에 따라 그들의 줄 서기 순서는 위에서 출력한 결과이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
layui- 동적 렌더링 드롭다운 상자 (백그라운드에서 드롭다운 상자 값 가져오기) & 드롭다운 상자 기본 선택 설정동적 렌더 드롭다운 상자 드롭다운 상자 기본 선택 설정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.