2017-05-01 6 views
3

jersey client 2.25를 사용하고 있으며 요청을 기록하고 있습니다. 이 로깅을 쉽게 로깅 구성 파일을 통해 설정 및 해제 할 수있는 쉬운 방법을 원합니다. logging.properties 파일을 클래스 경로에 넣으려고했으나 아무런 효과가없는 것 같습니다.저지 클라이언트 요청 로깅 수준을 구성하는 방법은 무엇입니까?

Logger logger = Logger.getLogger("my logger"); 

LoggingFilter filter = new LoggingFilter(logger, true); 

Client client = ClientBuilder.newClient().register(filter); 

참고 : LoggingFilter이 버전에 대한 사용되지하지만 2.5.1에 ​​돌아올 표시됩니다. 2.25에 대한 조언은 LoggingFeature을 사용하는 것입니다. 그러나 2.5.1에 ​​전혀 나타나지 않습니다.

답변

4

LoggingFeaturejersey 2.25.1 버전으로 찾을 수없는 이유가 확실하지 않습니다. 다음은

LoggingFeature 사용하여 수행 방법 중 하나입니다 -

클라이언트 클래스 -

Fine에 클라이언트 객체와 설정 로깅 수준을 생성 -

// Define it as a constant 
Logger LOGGER = Logger.getLogger(YourClient.class.getName()); 

// Set logging level to FINE level for request/response logging  
Feature feature = new LoggingFeature(LOGGER, Level.FINE, Verbosity.PAYLOAD_ANY, 
       LoggingFeature.DEFAULT_MAX_ENTITY_SIZE); 

Client client = ClientBuilder.newBuilder().register(feature).build(); 

log_config.properties 파일을 -

handlers= java.util.logging.FileHandler 

# Using this level, request/response logging can be controlled 
.level= FINE 

java.util.logging.FileHandler.pattern = ./logs/application.log 

java.util.logging.FileHandler.limit = 5000 

java.util.logging.FileHandler.count = 50 

java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

메인 클래스 - -

를 사용하여 클라이언트 응용 프로그램에서이 로그 구성 파일 - 아래 가정로그 구성 파일 지금

LogManager.getLogManager().readConfiguration(new FileInputStream("./config/log_config.properties")); 

, 당신의 loggingfeature는 로그인하도록 구성되어 있습니다 데이터가 FINE이고 로그 구성 파일도 FINE 레벨 로깅으로 구성되어 있으면 요청/응답이 로그됨을 의미합니다 로그에 저장됩니다.

로그 구성 파일에서 레벨을 변경하면 FINE에서 INFO까지 가정하면 요청/응답이 더 이상 로그에 기록되지 않습니다.

다음 이

편집 내가 사용하고있는 받는다는 종속성입니다 -

handlers= java.util.logging.ConsoleHandler 

.level= FINE 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
-

<dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.25.1</version> 
    </dependency> 

    <!-- Dependency for JSON request/response handling in Jersey --> 
    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-json-jackson</artifactId> 
     <version>2.25.1</version> 
    </dependency> 

을 편집 콘솔 로깅을, 당신은 단지 FINE 수준에서 요청/응답을 인쇄 구성 아래에 필요

수입 필수 명세서 -

import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.ws.rs.core.Feature; 
import org.glassfish.jersey.logging.LoggingFeature; 
import org.glassfish.jersey.logging.LoggingFeature.Verbosity; 
+0

pom 또는 gradle 빌드 파일 또는 종속성 목록 만 게시 할 수 있습니까? 내 의존성에 LoggingFeature가 없습니다. –

+0

@natk 나는 대답을 maven 의존성으로 편집했다. –

+0

아, 당신은 2.5.1이 아니라 2.25.1에 대해 이야기하고 있었고, 릴리스 주문에 대해 혼란 스러웠다! 알았어, 고마워. –