자바 로그 시스템 학습 의 slf4j!
6101 단어 자바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 바 인 딩 을 찾 지 못 했 기 때 문 입 니 다.
미완이다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.