아날로그log4j에서 로그 대상이 호출된 클래스 이름, 방법 이름, 줄 번호를 가져옵니다

7160 단어 J2EE
우리가 로그를 기록할 때, 모든 클래스에서 로그 대상을 정의한 다음에 이 대상을 이용하여 로그를 쓴다. 그러면 우리가 로그를 처리할 때, 어떻게 해야 로그 대상이 있는 클래스, 방법, 줄 번호를 기록할 수 있습니까?log4j에서 이 기능을 실현했는데 어떻게 실현되었을까요?
사실 우리는 이렇게 로그 코드를 쓸 때 현재의 루틴 정보를 얻을 수 있다. 그러면 우리는 이전 루틴의 정보를 얻을 수 있다. (즉 대상이 로그를 쓰는 클래스의 정보)
먼저 아래의 열을 보아라.
새 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();밑바닥에 라인을 만들 때 창고의 원리에 따라 선진적인 후출 규칙에 따라 그들의 줄 서기 순서는 위에서 출력한 결과이다.

좋은 웹페이지 즐겨찾기