2017-02-25 6 views
0

Ich bin mit Jersey-Client v2.25.1 für einen Rahmen REST Automatisierung und hier ist, wie ich den Logger bin Registrierung und Initialisierung des Kunden:Jersey Client 2.25 Protokollierung funktioniert nicht für Request/Response-Verkehr

//Initialize FileHandler 
Path currPath = Paths.get(System.getProperty("user.dir")); 
Path logFilePath = Paths.get(currPath.toString(), "logs", testCaseName+".log"); 
logHandleObj = new FileHandler(logFilePath.toString(), 0, 1, true); 

//Initialize Logger 
Logger loggerObj = Logger.getLogger(testCaseName); 
loggerObj.setUseParentHandlers(false); 
loggerObj.addHandler(logHandleObj); 

//Initialize ClientConfig 
ClientConfig clientConfig = new ClientConfig(); 
//Set configuration features 
clientConfig.register(new JacksonFeature()); 
clientConfig.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); 
clientInstance = ClientBuilder.newClient(clientConfig); 
//Register LoggingFeature 
clientInstance.register(new LoggingFeature(loggerObj, Level.ALL, 
     LoggingFeature.Verbosity.PAYLOAD_ANY, LoggingFeature.DEFAULT_MAX_ENTITY_SIZE)); 

Wie pro documentation wird diese komplette Request/Response-Verkehr wie so werden Anmeldung soll:

1 May 09, 2016 2:55:33 PM org.glassfish.jersey.logging.LoggingInterceptor log 
2 INFO: 1 * Server has received a request on thread grizzly-http-server-0 
3 1 > GET http://localhost:9998/helloworld 
.... 

aber ich bin immer:

<?xml version="1.0" encoding="windows-1252" standalone="no"?> 
<!DOCTYPE log SYSTEM "logger.dtd"> 
<log> 
<record> 
    <date>2017-02-25T15:30:06</date> 
    <millis>1488016806253</millis> 
    <sequence>0</sequence> 
    <logger>org.glassfish.jersey.client.JerseyInvocation</logger> 
    <level>WARNING</level> 
    <class>org.glassfish.jersey.client.JerseyInvocation</class> 
    <method>validateHttpMethodAndEntity</method> 
    <thread>1</thread> 
    <message>Entity must not be null for http method PUT.</message> 
</record> 

So zwei Probleme:

  • nicht den HTTP-Verkehr aus irgendeinem Grund
  • Format XML bekommen statt Klartext ist

wirklich jede Hilfe zu schätzen diese auf.

Antwort

0

Also nachdem ich überall hingeschaut habe, ging ich weiter und probierte alles aus, was mir einfiel und traf schließlich eine Lösung.

logHandleObj = new FileHandler(logFilePath.toString()); 
A-> SimpleFormatter formatter = new SimpleFormatter(); 

Logger loggerObj = Logger.getLogger(testCaseName); 
A-> logHandleObj.setFormatter(formatter); 
B-> loggerObj.setLevel(Level.FINEST); 
loggerObj.setUseParentHandlers(false); 

Hinzufügen von Linien markiert mit A oben regelte das Problem mit XML-Format (das war leicht) und das Hinzufügen der Zeile markiert B das Problem mit dem HTTP-Datenverkehr in den Protokolldateien nicht kommen fixierte.

Also abschließend sollte die Level explizit auf FINEST gesetzt werden, damit dies funktioniert und das ist nirgends in der Dokumentation zu finden. Hoffe, das hilft jemandem.

Verwandte Themen