জার্সি সার্ভারে উত্পন্ন এবং প্রেরণকারী আসল অনুরোধটি আমি কীভাবে দেখতে পারি? আমার একটি বিশেষ অনুরোধ এবং ওয়েব সার্ভার চালানো সহকারীর সম্পূর্ণ অনুরোধটি (শিরোনাম এবং এর সাথে) দেখার জন্য জিজ্ঞাসা করে আমার সমস্যা হচ্ছে।
জার্সি সার্ভারে উত্পন্ন এবং প্রেরণকারী আসল অনুরোধটি আমি কীভাবে দেখতে পারি? আমার একটি বিশেষ অনুরোধ এবং ওয়েব সার্ভার চালানো সহকারীর সম্পূর্ণ অনুরোধটি (শিরোনাম এবং এর সাথে) দেখার জন্য জিজ্ঞাসা করে আমার সমস্যা হচ্ছে।
উত্তর:
আপনি যদি কেবল জার্সি ক্লায়েন্ট এপিআই ব্যবহার করে থাকেন তবে লগিংফিল্টার (ক্লায়েন্ট ফিল্টার) আপনাকে সহায়তা করবে:
Client client = Client.create();
client.addFilter(new LoggingFilter(System.out));
WebResource webResource = client.resource("http://localhost:9998/");
ClientResponse response = webResource.accept(MediaType.APPLICATION_JSON)
.get(ClientResponse.class);
অন্যথায়, আপনি আবার অন্য লগিংফিল্টার (ধারক ফিল্টার) ব্যবহার করে সার্ভারে অনুরোধ এবং প্রতিক্রিয়া উভয়ই লগ করতে পারেন ।
addFilterপদ্ধতিটি জার্সি ২.x এ বিদ্যমান নেই। আপনি এখন এটি কীভাবে ব্যবহার করবেন?
জার্সি ২.২৩ থেকে যেহেতু LoggingFeatureআপনি ব্যবহার করতে পারেন এমন একটি রয়েছে । নিম্নলিখিতটি কিছুটা সরলীকৃত উদাহরণ, দয়া করে নোট করুন যে আপনি বৈশিষ্ট্যটিও নিবন্ধ করতে পারেন WebTarget।
Logger logger = Logger.getLogger(getClass().getName());
Feature feature = new LoggingFeature(logger, Level.INFO, null, null);
Client client = ClientBuilder.newBuilder()
.register(feature)
.build();
Response response = client.target("https://www.google.com")
.queryParam("q", "Hello, World!")
.request().get();
জাভাডক LoggingFeatureবলেছেন যে অনুরোধটি "এবং / অথবা" প্রতিক্রিয়াটি লোগুল। আমার মেশিনে, উভয়ই লগড।
@ আইভান.সাইকিকের জার্সি ১.x এর উত্তর। আপনি এটি জার্সি ২.x এ কীভাবে করেন তা এখানে:
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.filter.LoggingFilter;
import org.json.JSONException;
import org.json.JSONObject;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.MediaType;
...
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
client.register(new LoggingFilter());
এই অপ্রাসঙ্গিক কিন্তু আমি শুধু আছে অভিযোগ করতে: নতুন LoggingFilterকারণ এটি জাভা util লগিং ব্যবহার করতে বাধ্য করে সত্যিই বিরক্তিকর। এটি যদি আমাকে লগারের উপর নিয়ন্ত্রণ দেয় তবে ভাল হবে। নকশায় পিছনের দিকের মতো মনে হচ্ছে।
LoggingFilter(Logger logger, boolean PrintEntity)কনস্ট্রাক্টর ব্যবহার করেছি , তবে এটি কুকিজ মুদ্রণ করে না।
LoggingFeatureকোনও কিছুই মুদ্রণ করে না এবং LoggingFilterমুদ্রণও করে ... ♂️♂️
এই সমস্ত উত্তর বেশ কাছাকাছি কিন্তু অনুরোধ এবং প্রতিক্রিয়া বডি লগ ইন করার সেটিংয়ের অভাব রয়েছে। কমপক্ষে জার্সির ২.৩০.১. এর সাথে আমি অনুরোধ এবং প্রতিক্রিয়াটি তাদের নিজ নিজ সংস্থাসহ লগইন করে শেষ করব:
import javax.ws.rs.client.ClientBuilder;
import org.glassfish.jersey.logging.LoggingFeature;
import java.util.logging.Level;
import java.util.logging.Logger;
Logger logger = Logger.getLogger("LoggingFeature");
logger.setLevel(Level.ALL);
ClientBuilder.newClient()
.target("https://www.example.com")
.register(new LoggingFeature(
logger,
Level.ALL,
LoggingFeature.Verbosity.PAYLOAD_ANY,
8192))
.request()
.get();
প্রযুক্তিগতভাবে Level.Allএবং 8192মান হতে পারে null। আমি এখানে সংক্ষিপ্ত হতে এখানে তাদের সরবরাহ।