자바 로그 시스템 학습 의 slf4j!

크 고 작은 프로젝트 나 프레임 워 크 는 로그 에 유용 합 니 다.자기가 다 수박 겉 핥 기 야.
오늘 은 또 틀 을 짜 서 열심히 공부 하고 정리 하기 로 마음 먹 었 습 니 다!
1. slf4j.
http://www.slf4j.org/
직접 홈 페이지 에 올 라 가 직접 공부 하 다.
인터넷 에서 각종 자 료 를 찾 는 것 은 유행 이 지난 것 이 아니 라, 네가 나 를 베 낀 것 이 고, 내 가 너 를 베 낀 것 이다.재미 없어 보 여요.
사용자 매 뉴 얼 을 직접 보다.
1.1 가장 간단 한 사용법.클래스 경로 에 slf4j - api. jar 와 slf4j - simple. jar 를 추가 합 니 다.

package edu.guet.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloLog {
	private static final Logger log = LoggerFactory.getLogger(HelloLog.class);
	public static void main(String[] args) {
		log.info("hello,world");
		
	}
}
/***
    :
0 [main] INFO edu.guet.log.HelloLog - hello,world
**/


   slf4j 비트 문자 및 로그 단계:

package edu.guet.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestLogPlaceHolder {
	private static final Logger log = LoggerFactory.getLogger(TestLogPlaceHolder.class);
	
	private String name;
	private int id;
	
	public static void main(String[] args) {
		TestLogPlaceHolder holder = new TestLogPlaceHolder();
		holder.setName("banxi");
	}

	public void setName(String name) {
		String oldName = name;
		this.name = name;
		log.debug("name set to {},old name is {}",name,oldName);
		log.warn("name set to {},old name is {}",name,oldName);
		log.error("name set to {},old name is {}",name,oldName);
		
		if(name.equals("banxi")){
			log.info("welcome,{} is coming",name);
		}
		
		
	}
}
/***
      :
1 [main] WARN edu.guet.log.TestLogPlaceHolder - name set to banxi,old name is banxi
2 [main] ERROR edu.guet.log.TestLogPlaceHolder - name set to banxi,old name is banxi
2 [main] INFO edu.guet.log.TestLogPlaceHolder - welcome,banxi is coming

***/

  분석, slf4j 는 {} 을 점 위치 문자 로 사용 할 수 있 습 니 다.묵인 하 다.debug 단계 의 출력 이 표시 되 지 않 습 니 다.
   로그 수준 입 니 다.
    error>warn>info>debug
   점 위 부 호 를 사용 하 는 것 은 성능 을 향상 시 킬 수 있 기 때문이다.
테스트 는 다음 과 같 습 니 다:

//         :
		long beginTime = System.nanoTime();
		log.debug("name set to {},old name is {}",name,oldName);
		long endTime = System.nanoTime();
		log.info("placeholder spend time {}",(endTime - beginTime));
//      :
//2 [main] INFO edu.guet.log.TestLogPlaceHolder - placeholder spend time 
8334
		

//          
		long beginTime = System.nanoTime();
		log.debug("name set to"+name+",old name is"+oldName);
		long endTime = System.nanoTime();
		log.info("placeholder spend time {}",(endTime - beginTime));
//       :
1 [main] INFO edu.guet.log.TestLogPlaceHolder - placeholder spend time 42742		

하 나 는 8334, 하 나 는 42742.실제 debug 단 계 를 입력 하지 않 은 상태 에서점 위 부 호 를 사용 하 는 성능 은 사용 하지 않 는 5 배 입 니 다.
다시 한 번 테스트 해 보 세 요. 모두 info 단계, 즉 입력 할 경우 입 니 다.성능 비교:

//               
		long beginTime = System.nanoTime();
		log.info("name set to"+name+",old name is"+oldName);
		long endTime = System.nanoTime();
		log.info("placeholder spend time {}",(endTime - beginTime));
//       :
0 [main] INFO edu.guet.log.TestLogPlaceHolder - name set tobanxi,old name isbanxi
3 [main] INFO edu.guet.log.TestLogPlaceHolder - placeholder spend time 394765		

//          :
		long beginTime = System.nanoTime();
		log.info("name set to{},old name is{}",name,oldName);
		long endTime = System.nanoTime();
		log.info("placeholder spend time {}",(endTime - beginTime));
		
2 [main] INFO edu.guet.log.TestLogPlaceHolder - name set tobanxi,old name isbanxi
3 [main] INFO edu.guet.log.TestLogPlaceHolder - placeholder spend time 2342676

하 나 는 2342676 이 고 하 나 는 394765 입 니 다.
성능 차이 도 5 배 나 되 는 모양 이다.이것 은 이해 할 수 있다.String 의 연결 이 최적화 되 었 기 때 문 입 니 다.점 위 부 호 를 사용 하면 해석 을 해 야 합 니 다.
정적로그 구성원 의 변 수 는 정적 으로 설명 하 는 것 이 좋 습 니까? 아니면 인 스 턴 스 로 설명 하 는 것 이 좋 습 니까?
그들 은 각자 좋 은 점 이 있다.
주요 차이 점 은 Logger 구성원 을 정적, 성능 및 메모리 측면 에서 우세 하 다 는 것 이다.그러나 인 스 턴 스 형 Logger 는 IOC 우호 적 이다.
상세 한 설명 은 slf4j 의 설명 을 참고 합 니 다.
http://www.slf4j.org/faq.html#logging_performance
spring 프로젝트 에 서 는 다양한 로그 시스템 을 사용 합 니 다.
따라서 spring 프레임 워 크 에 사용 할 로 그 를 설정 할 때 slf4j 와 log4j 를 이용 하려 면 다음 로그 패키지 가 필요 합 니 다.
slf4j-api-version.jar
slf4j-log4j12-version.jar
jcl-over-slf4j-version.jar
log4j-1.2.16.jar
밥 부터 먹고...
또 밤 이다.스프링 이 그렇게 많은 로그 시스템 을 사용 했다 고 합 니 다.증거 로 찾 아야 돼.
1. jcl

// org.springframework.web.servlet.DispatcherServlet    。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

2. log4j 는 spring - mvc 템 플 릿 으로 log4j. xml 파일 을 볼 수 있 습 니 다.
3.slf4j
  어 딘 가 에 소스 코드 가 있 었 는데 그때 봤 는데 지금 은 못 찾 겠 어 요.스프링 오 스키 에 있 는 건 확실 해.slf4j 사이트 에 있 습 니 다.
slf4j 와 다른 로그 시스템 의 조합 은 홈 페이지 의 그림 을 보면 된다.
다음 과 같다.
클릭 하여 그림 보기
iteye 에 서 는 자바 로그 시스템 에 대한 정리 가 많 고 좋 은 사람 이 많 습 니 다.
예 를 들 면.
자바 로그, 알 아야 할 몇 가지
발생 할 수 있 는 오류:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
적절 한 slf4j 바 인 딩 을 찾 지 못 했 기 때 문 입 니 다.
미완이다

좋은 웹페이지 즐겨찾기