자바 디 버 깅
10418 단어 자바
System. out. println () 은 매우 부족 한 점 이 있 습 니 다. 프로그램 디 버 깅 이 끝 난 후에 이 프로그램 을 제품 화 할 때 System. out. println () 의 출력 을 제거 해 야 합 니 다. 이 럴 때 한 줄 한 줄 씩 스 캔 해 야 할 수도 있 습 니 다. 번 거 로 울 수도 있 습 니 다.
log4j 는 기능 이 강하 고 사용 하기 쉬 운 로그 도구 이기 때문에 log4j 는 보조 디 버 깅 외 에 프로그램의 실행 로 그 를 기록 할 수 있 습 니 다. log4j 는 c, c++, c\#, perl, python 등 을 지원 할 수 있 습 니 다.
1. log4j 다운로드 및 설치
http://logging.apache.org/log4j/다운로드 후 압축 을 풀 면 다음 파일 구 조 를 볼 수 있 습 니 다.
2. Logger
Logger 는 log4j 의 가장 중요 한 구성 요소 로 로그 출력 기 를 대표 합 니 다. 그 기능 은 System. out 과 유사 합 니 다. 즉, 프로그램 에서 Logger 를 통 해 출력 할 수 있 습 니 다. Logger 가 System. out 보다 더 강 한 것 은 일부 디 버 깅 정보의 출력 을 자 유 롭 게 닫 을 수 있 고 다른 사람 이 호출 하 는 데 영향 을 주지 않 습 니 다.
Logger 가 일부 디 버 깅 정보의 출력 을 닫 고 다른 사람 에 게 영향 을 주지 않도록 로그 에 대해 분류 제 어 를 해 야 합 니 다. log4j 에서 Logger 의 분 류 는 이름 을 통 해 제 어 됩 니 다. Logger 의 이름 은 org. crazy it. empsys. Manager 와 같은 대소 문 자 를 구분 하 는 문자열 입 니 다.
프로그램 에서 Logger 를 얻 는 것 은 매우 간단 합 니 다. Logger 는 다음 과 같은 두 가지 정적 방법 을 제공 하여 Logger 대상 을 얻 습 니 다.
log4j 는 뿌리 (root) Logger 도 제공 합 니 다. 모든 Logger 의 조상 이 고 뿌리 는 두 가지 특징 을 가지 고 있 습 니 다.
위 에서 알 수 있 듯 이 Logger 가 출력 을 수행 할 때 한 단계 의 문제 와 관련된다. log4j 는 위의 5 가지 방법 에 대응 하 는 5 개의 단 계 를 제공 했다. 그들의 우선 순 위 는 낮은 것 에서 높 은 것 으로 다음 과 같다. DEBUG < INFO < WARN < ERROR < FATAL >
이 동시에 log4j 는 Logger 의 setLevel (Level level) 방법 으로 자신의 단 계 를 설정 할 수 있 습 니 다. 예 를 들 어 logger. setLevel (level. DEBUG);
log4j 는 하나의 규칙 을 제정 했다. Logger 의 출력 방법의 등급 이 Logger 자체 의 등급 보다 높 거나 같 을 때 만 이 출력 문 구 는 진정한 출력 을 생 성 할 수 있다. 예 를 들 어 다음 과 같다.
Logger logger = Logger.getLogger("com.foo");
logger.setLevel(Level.INFO);//Logger 자체 의 우선 순위 INFO 설정
logger.warn("www.crazyit.org");//이 출력 문 구 는 출력 을 생 성 합 니 다. WARN > INFO 때 문 입 니 다.
logger.debug("www.cryzit.org");//이 출력 문 구 는 출력 되 지 않 습 니 다. DEBUG < INFO
Logger 를 사용 하여 디 버 깅 정 보 를 출력 하 는 데 3 단계 만 있 으 면,
1) Logger 의 getLogger () 정적 방법 으로 Logger 대상 을 되 돌려 줍 니 다.
2) setLevel () 방법 으로 Logger 의 단 계 를 설정 합 니 다.
3) Logger 의 debug (), info (), warn (), error (), fatal () 방법 으로 정 보 를 출력 합 니 다.
만약 프로그램 이 매번 세 단 계 를 통 해 출력 을 실행 해 야 한다 면, log4j 는 System. out 보다 조금 유연 할 뿐, 프로그램 이 디 버 깅 출력 을 닫 아야 할 때, 그것들 에 대응 하 는 Logger 의 level 를 더 높 게 설정 하면 된다. 그러나 이것 도 좋 지 않다.
이 를 위해 log4j 는 프로그램 이 어떤 Logger 에 level 을 표시 하지 않 으 면 가장 가 까 운 조상 level 을 계승 하 는 규칙 을 만 들 었 습 니 다.
프로그램 은 모든 Logger 에 level 을 표시 할 필요 가 없습니다. Logger 의 정보 출력 을 제어 하려 면 이 Logger 의 최상 위 Logger level 을 제어 하면 됩 니 다.
각 클래스 의 Logger 를 편리 하 게 제어 하기 위해 서 는 현재 클래스 의 클래스 와 같은 이름 으로 설정 하 는 습관 이 있 습 니 다. 예 를 들 어 Logger log = Logger. getLogger (EmpManager. class);
만약 EmpManager 클래스 가 org. crazyit. salary. service 패키지 에 있다 면 이 Logger 의 이름 은 org. crazyit. salary. service. EmpManager 입 니 다.
3. Appender 와 Layout
log4j 는 콘 솔, 파일, GUI 구성 요소, 원 격 Socket 서버 등 다양한 장치 에 로 그 를 출력 할 수 있 으 며, 로 그 를 여러 출력 장치 에 출력 할 수 있 습 니 다.
로그 정보의 출력 목적 을 나타 내 는 Appender 를 사용 합 니 다.
콘 솔 Appender: 콘 솔 로 출력
Daily Rolling FileAppender: 파일 에 출력 된 Appender. 등등 이 많 습 니 다.
Logger 는 지정 한 Appender 를 Logger 와 연결 하 는 addAppender () 방법 을 제공 합 니 다. 기본 적 인 상황 에서 모든 Logger 와 연 결 된 Appender 는 모든 조상 Logger 와 연 결 된 Logger 와 자신 이 연 결 된 Appender 의 합계 입 니 다.
Layout 는 출력 스타일 을 말 합 니 다.
HTML 레이아웃: 로그 출력 을 HTML 형식의 레이아웃 으로 제어 합 니 다.
XMLlayout, PatternLayout (문자열), SimpleLayout (간단 한 로그 정보)
4. log4j 출력 사용
실제 개발 에서 log4j 를 사용 할 때 자바 코드 에서 Logger, Appender, Layout 를 정의 하지 않 고 보통 설정 파일 로 관리 합 니 다. log4j 는 다음 과 같은 두 가지 형식의 설정 파일 을 허용 합 니 다.
Properties 속성 파일 형식의 프로필 입 니 다. 보통 파일 이름 은 log4j. properties 입 니 다.
xml 형식의 프로필 입 니 다. 보통 파일 이름 은 log4j. xml 입 니 다.
그런 파일 을 사용 하 더 라 도 설정 하 는 방법 은 같 습 니 다. 아래 세 부분 을 설정 합 니 다.
출력 을 제어 하기 위해 하나 이상 의 Logger 를 설정 합 니 다.
하나 이상 의 Appender, Appender 대표 로그 의 출력 장 치 를 설정 해 야 합 니 다. Appender 를 설정 할 때 사용 할 Layout 를 설정 해 야 합 니 다.
Logger 를 하나 이상 의 Appender 와 연결 합 니 다.
예: log4j. xml
<?xml version="1.0" encoding="gdk" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appender -->
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<!-- Appender Layout -->
<Layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="===CRAZYIT.ORG=== %r %d [%t] %-p %c %x - #%l# - %m%n"/>
</layout>
</appender>
<!-- logger lee Logger -->
<logger name="lee">
<!-- debug -->
<level value=“debug”/>
<!-- -->
<appender-ref ref="stdout"/>
</logger>
<!-- , Appender -->
<root>
<!-- info -->
<level value="info"/>
<appender-ref ref="stdout"/>
</root>
</log4j:configuration>
그리고 프로그램 에서 logger. debug 를 직접 사용 할 수 있 습 니 다.
기타 방법
1. 컴 파 일 러 를 이용 한 알림 정보
2. 추적 프로그램의 실행 절차
3. 인 터 럽 트 디 버 깅 (IDE 제공, 예 를 들 어 eclipse)
4. 격 리 디 버 깅 (일부 코드 주석 제거)
5. 디 버 깅 의 기본 사고방식 (세그먼트 디 버 깅)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.