HttpClient লগিং অক্ষম করুন


133

আমি একটি ইন্টিগ্রেশন টেস্ট স্যুটিতে কমন্স-httpclient 3.1 ব্যবহার করছি। এইচটিপিপ্লিয়েন্টের জন্য ডিফল্ট লগিং চূড়ান্ত শোরগোলযুক্ত এবং আমি এটি বন্ধ করে দিচ্ছি বলে মনে হয় না। আমি এখানে নির্দেশাবলীর অনুসরণ করার চেষ্টা করেছি কিন্তু তাদের মধ্যে কোনওরকম কোনও পার্থক্য নেই।

বেশিরভাগ ক্ষেত্রে আমাকে কেবল org.apache.http.wire লগারটি বন্ধ করে দেওয়া দরকার। সমস্যার অংশটি হ'ল আমি জানি না যে এইচটিটিপিপ্লিনেন্ট কোন ধরণের লগার ব্যবহার করার চেষ্টা করছে এবং বেশিরভাগ সমস্যা হ'ল আমি এই লাইব্রেরিটি আগে কখনও ব্যবহার করি নি। আমি একটি লগ 4j.properties ফাইল তৈরি করার চেষ্টা করেছি এবং এটি আমার পরীক্ষার / সংস্থান ফোল্ডারে রেখে দেওয়ার চেষ্টা করেছি, জেআর / লিবিতে মাস্টার লগিং.প্রপার্টি ফাইলটি সংশোধন করে এবং লগিং পৃষ্ঠায় বর্ণিত বিভিন্ন লগিং অপশন প্রেরণ করেছি, এবং সেগুলির কোনওটিই নয় যে কোনও পার্থক্য।

কোনও সহায়তা প্রশংসা করা হয় ... এটি আমার বাদাম চালাচ্ছে।

আপডেট: একটি সংশোধন: এটি প্রদর্শিত আউটপুটটি আসলে আমার নিজস্ব নয়, জ্বেবুনিটের ব্যবহারের মাধ্যমে উদ্ভূত হয়েছে বলে মনে হচ্ছে। যেভাবেই হোক, এটি কাম্য নয়।

আপডেট: এখন পর্যন্ত চেষ্টা করার জন্য ধন্যবাদ। আমি নীচে প্রস্তাবিত সবকিছু চেষ্টা করেছি কিন্তু এখনও ভাগ্য নেই। আমার এসসিআর / টেস্ট / সংস্থান ফোল্ডারে নীচের বিষয়বস্তু সহ একটি ফাইল কমন্স-ব্লগিং p প্রপার্টি আছে

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties

এবং নিম্নলিখিত ফন্টে একই ফোল্ডারে লগ 4j.properties একটি ফাইল

log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n

#This is the line that should make httpclient shut up
log4j.logger.org.apache.http=ERROR

যাইহোক, আমি যখন আমার পরীক্ষাগুলি চালাই আমি তখনও এরকম একগুচ্ছ আউটপুট পাই:

21:57:41.413 [main] DEBUG org.apache.http.wire - << "                                   [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "                                   [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "                               </ul>[\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "    [\n]"
21:57:41.424 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "                   </div>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "                </li>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "            [\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "            [\r][\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "        </ul>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "<div class="details">[\n]"
21:57:41.442 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-body details-precis  ">[\n]
"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-state">[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
Destroying 1 processes21:57:41.465 [main] DEBUG org.apache.http.wire - << "[\r][\n]"

ওয়্যার জুড়ে আসে এমন প্রতিটি কিছুর জন্য এই আউটপুটটি এই লাইব্রেরিটিকে আমার অযোগ্য ব্যবহারযোগ্য করে তুলছে ... এটি আমি কীভাবে এটি বন্ধ করব তা বুঝতে না পারছি। এই লগ কনফিগারেশনটি পড়ার জন্য আমার বিশেষ কিছু করার দরকার আছে?


এই সমস্যার মুখোমুখি হওয়ার জন্য: -Dlog4j.debugডান কনফিগারেশন ফাইলটি লোড হয়েছে কিনা তা নিশ্চিত করার জন্য আপনার ভিএম বিকল্পগুলিতে যোগ করার বিষয়টি নিশ্চিত করুন
টমি

3
স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / ১৪৩67616161/২ দেখুন । সংক্ষিপ্তসার হিসাবে:public class Main { static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); } // Rest of class as before }
পিভিএস


3
এটি কি কখনও ওপি-র জন্য সমাধান হয়ে যায়? এই সঠিক সমস্যাটি আমাকে হত্যা করছে।
কলিন বেল

2
এই কি সমাধান? উত্তরগুলি বরাদ্দ দেওয়ার চেষ্টা করা হয়েছে, ভাগ্য নেই।
মার্কভিডস

উত্তর:


85

log4j.propertiesঅন্তর্ভুক্ত করতে আপডেট করুন:

log4j.logger.httpclient.wire.header=WARN
log4j.logger.httpclient.wire.content=WARN

নোট করুন যে লগ 4 জে লাইব্রেরি ইনস্টল না করা থাকলে, এইচটিপিপি্লিয়েন্ট (এবং সেইজন্য জেউবউনিট) লগব্যাক ব্যবহার করবে। এই পরিস্থিতিতে logback.xmlঅন্তর্ভুক্ত করতে তৈরি বা সম্পাদনা করুন:

<configuration>
    <logger name="org.apache" level="WARN" />
    <logger name="httpclient" level="WARN" /> 
</configuration>

লগ স্তর সেটিং WARNLog4j প্যাকেজের নাম ব্যবহার করে org.apache.commons.httpclientlog4j.properties কাজ করবে না বলে আশা করা হিসাবে:

log4j.logger.org.apache.commons.httpclient=WARN

কারণ এইচটিটিপিপ্লিনেন্ট (v3.1) এর উত্স নিম্নলিখিত লগ নামগুলি ব্যবহার করে:

public static Wire HEADER_WIRE = new Wire(LogFactory.getLog("httpclient.wire.header"));
public static Wire CONTENT_WIRE = new Wire(LogFactory.getLog("httpclient.wire.content"));

19
৪.২.১ উত্সে লগের নামগুলি হ'ল: "org.apache.http.headers" এবং "org.apache.http.wire", যদিও এগুলি ব্যবহার করার পরেও শোরগোলের অ্যাপাচি লগিং আমার জন্য বন্ধ হয়ে যাবে বলে মনে হচ্ছে না seem ।
টিনক্লন

ধন্যবাদ!!! এছাড়াও: যদি আপনার নিজের কোডটিতে কোথাও এই সমস্যা থাকে তবে আপনি httpclient ব্যবহার করেন এবং ইতিমধ্যে লগ 4 জ ব্যবহার করেন না: এছাড়াও লগ 4 জারটিকে ক্লাসপথে অন্তর্ভুক্ত করার কথা মনে রাখবেন ...
ফেলিক্সড

30

দ্রষ্টব্য: এই উত্তরের কয়েকটি আপনার কাছে ইতিমধ্যে জেনে থাকা জিনিসগুলির পুনরাবৃত্তি করতে পারে (বা মনে হয় আপনি জানেন), তবে এই প্রশ্নটি সম্পর্কে প্রায় কিছু ভুল তথ্য রয়েছে, তাই আমি শুরুতে শুরু করব এবং এটিকে বানান করব

  • কমন্স এইচটিপিএলক্লিয়েন্ট তার সমস্ত লগিং প্রয়োজনীয়তার জন্য কমন্স-লগিং ব্যবহার করে।
  • কমন্স-লগিং একটি সম্পূর্ণ লগিং ফ্রেমওয়ার্ক নয়, বরং বিদ্যমান কয়েকটি লগিং ফ্রেমওয়ার্কের চারপাশে মোড়ক
  • এর অর্থ এই যে আপনি যখন লগিং আউটপুট নিয়ন্ত্রণ করতে চান, আপনি (বেশিরভাগ ক্ষেত্রে) কমন্স-লগিং ব্যতীত অন্য কোনও লাইব্রেরি কনফিগার করতে পারেন তবে কমন্স-লগিং অন্যান্য বেশ কয়েকটি লাইব্রেরির চারপাশে মোড়ক রাখে বলে আমাদের পক্ষে ধারণা করা শক্ত না যে কোনটি কনফিগার করা উচিত? আপনার ঠিক সেটআপ।
  • কমন্স-লগিং লগ java.util.logging4j এ লগইন করতে পারে তবে এটি লগইন করতে পারে (JDK1.4 লগিং)
  • কমন্স-লগিং স্মার্ট হওয়ার চেষ্টা করে এবং অনুমান করার চেষ্টা করে যে আপনি ইতিমধ্যে কোন লগিং ফ্রেমওয়ার্কটি ব্যবহার করছেন এবং এর লগগুলি এতে প্রেরণ করবেন।
  • আপনার যদি ইতিমধ্যে লগিং কাঠামো না থাকে এবং আপনি যদি একটি জেআরই তে চালাচ্ছেন যা ১.৪ বা তার বেশি (যা আপনার সত্যিকারের হওয়া উচিত) তবে এটি সম্ভবত জেডিকে লগিংয়ে তার লগ বার্তা প্রেরণ করবে (java.util.logging )
  • কমন্স-লগিংয়ের অটোডিস্কোভারি প্রক্রিয়াতে নির্ভর করা ত্রুটির প্রবণ। সহজভাবে যোগ করাlog4j.jarক্লাসপথে করার ফলে এটি কোন লগিং প্রক্রিয়াটি ব্যবহার করে তা স্যুইচ করে দেবে, যা সম্ভবত আপনি চান না
  • কমন্স-লগিংটি কোন লগিং লাইব্রেরিটি ব্যবহার করবেন তা স্পষ্টভাবে বলাই আপনার পক্ষে ভাল
  • আপনি এই নির্দেশাবলী অনুসারে একটি commons-logging.propertiesফাইল তৈরি করে এটি করতে পারেন
  • কমন্স-httpclient লগিং কনফিগার করতে আপনি যে পদক্ষেপগুলি অনুসরণ করতে চান তা হ'ল
    1. আপনি কোন অন্তর্নিহিত লগিং ফ্রেমওয়ার্কটি ব্যবহার করতে চান তা সিদ্ধান্ত নিন। বিভিন্ন ধরণের পছন্দ রয়েছে, তবে সম্ভবত log4jবা আপনার java.util.loggingপক্ষে সেরা বিকল্প।
    2. সঠিক Logপ্রয়োগের দিকে নির্দেশ করতে কমন্স-লগিং বৈশিষ্ট্য ফাইল সেট আপ করুন । যেমন log4j ব্যবহার করতে, এটি বৈশিষ্ট্য ফাইলে রাখুন: org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLoggerবা জেডিকে লগিং সেট ব্যবহার করতে org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger। এগুলি সিস্টেম বৈশিষ্ট্য হিসাবে সেট করা যেতে পারে (উদাহরণস্বরূপ -Dকমান্ড লাইনে ব্যবহার করে)।
    3. আপনি চান না এমন বার্তাগুলি উপেক্ষা করতে অন্তর্নিহিত লগিং প্রয়োগকরণ (যেমন লগ 4 জে) কনফিগার করুন এবং আপনি যে বার্তাগুলি চান তা আউটপুট করে।

এটি অনেক ধাপ, তবে এটি এটি নেয়। অ্যাপাচি-কমন্সের বিকাশকারীরা ধরেই নেবেন যে আপনার কাছে ইতিমধ্যে একটি লগিং ফ্রেমওয়ার্ক কনফিগার করা আছে এবং তারা স্বয়ংক্রিয় আবিষ্কার দ্বারা এটি কোনটি তৈরি করতে পারে তা ধরে নিতে পারে।
যদি এটি আপনার পক্ষে সত্য না হয় তবে জিনিসগুলিকে চালিত করতে এটি আরও কিছুটা কাজ হতে ঝোঁক।


1
এটি খুবই দরকারী তথ্য; আমি সত্যিই মনে এই যোগ করা উচিত পৃষ্ঠা । আপনি কি এই জন্য এটি লিখেছেন?
natem345

1
ম্যান, এই উত্তরটি দুর্দান্ত, তবে আমি এটি কার্যকর করতে ব্যর্থ হয়েছি। আমি ড্রপউইজার্ডটি ব্যবহার করছি এবং আপনার উল্লিখিত সমস্ত কিছু আমি চেষ্টা করেছিলাম, কোনও লাভ হয়নি: '(
ভিক সিডুবলিউউ

19

আমি এটি আমার লগ 4 জে কনফিগারেশন ফাইলে রেখেছি

log4j.logger.org.apache.http.wire=WARN

এটি আউটপুটটিকে সতর্কতা স্তরের বা উপরে সীমাবদ্ধ করে


19

এটি আমার পরীক্ষার জন্য কাজ করেছিল;

java.util.logging.Logger.getLogger("org.apache.http.wire").setLevel(java.util.logging.Level.FINEST);
java.util.logging.Logger.getLogger("org.apache.http.headers").setLevel(java.util.logging.Level.FINEST);
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", "ERROR");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "ERROR");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.headers", "ERROR");

18

লগ 4j এর জন্য, নিম্নলিখিতগুলিতে log4j.properties(অ্যাপ্লিকেশনটির sourceডিরেক্টরিতে) যুক্ত করুন:

log4j.logger.org.apache=WARN
log4j.logger.httpclient=WARN

লগব্যাকের জন্য, নীচের শব্দগুলি logback.xmlনিহত করবে:

<configuration>
    <logger name="org.apache" level="WARN" />
    <logger name="httpclient" level="WARN" /> 
</configuration>

1
আমি লগ 4 জে ব্যবহার করছি। লগে প্রথম দুটি লাইন যুক্ত করা আমার সমস্যাটিকে সম্পূর্ণ সমাধান করে। আমার অন্যান্য সমস্ত লগ বার্তাগুলি আমি যে স্তরটি সেট করেছি সে অনুযায়ী প্রদর্শিত হবে। অ্যাপাচি লগ করে না। অসামান্য সাহায্য. ধন্যবাদ।
অরুণ থান্ডিলিল সাসেন্দ্রন

এটি সম্ভবত আপনার পরিস্থিতির উপর নির্ভর করে পরিবর্তিত হতে পারে, তবে ডাব্লুএসএসকে দিয়ে বাক্সের বাইরে সক্ষম ভেরবোস লগিং অক্ষম করার জন্য, এটি কেবলমাত্র কাজ করেছিল।
ম্যাট বেকার

11

এটি খুঁজে পেতে এটি অনেক দীর্ঘ সময় নিয়েছে, তবে জেউবউনিট লগব্যাক লগিং উপাদানটির সাথে বান্ডিল হয়ে আসে , সুতরাং এটি এমনকি ব্যবহার করবে না log4j.propertiesবা ব্যবহার করবে না commons-logging.properties

পরিবর্তে, কল করা একটি ফাইল তৈরি করুন logback.xmlএবং এটি আপনার উত্স কোড ফোল্ডারে রাখুন (আমার ক্ষেত্রে, src):

<configuration debug="false">
  <!-- definition of appender STDOUT -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>

  <root level="ERROR">
    <!-- appender referenced after it is defined -->
    <appender-ref ref="STDOUT"/>
  </root> 
</configuration>

লগব্যাকটি এখনও বিকাশের অধীনে রয়েছে এবং এপিআই এখনও মনে হচ্ছে এটি পরিবর্তিত হচ্ছে, তাই এই কোড নমুনাটি ভবিষ্যতে ব্যর্থ হতে পারে। আরও দেখুন এই Stackoverflow প্রশ্ন


1
আপনি সৌন্দর্য। এই জিনিসটির কারণে আমি প্রায় একটি বিড়ালকে হত্যা করেছি। এটা আমাকে উন্মাদ করে দিচ্ছিল।
মনীশ প্যাটেল

এটি আমার জন্য সমাধান ছিল। আমি মনে করি এটির কারণ আমি অন্যান্য লাইব্রেরিগুলিতে ট্রান্সজিটিভলি অন্তর্ভুক্ত লগব্যাকটি অন্তর্ভুক্ত ছিল তাই এটি এই লগারে লক হয়ে গেছে।
নাথান

10

JUnit এর সাথে রেস্ট অ্যাসুরড ব্যবহার করার সময় আমার এই সমস্যাটি ছিল। আমার জন্য এই প্রোগ্রাম্যাটিক পদ্ধতির কাজ করেছে:

@BeforeClass
public static void setUpClass() {
    ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger("org.apache.http");
    root.setLevel(ch.qos.logback.classic.Level.INFO);

    //...
}

2
ফ্যান্টাস্টিক, একমাত্র সমাধান এটি আমার পক্ষে কাজ করেছিল। অনেক ধন্যবাদ.

ধন্যবাদ! পরীক্ষা পদ্ধতিটি শুরুতে ঠিক একই কোডটি ব্যবহার করা হচ্ছে, কিছুই করেনি। এটিকে নিজের @Beforeবা @BeforeClassফাংশনে রেখে সুন্দরভাবে কাজ করেছে।
এক্সট্যাকটাবক্স

8

আমরা আমাদের লগিং আউটপুটটি কনফিগার করতে প্রপার্টি ফাইলের চেয়ে এক্সএমএল ব্যবহার করি। নিম্নলিখিত কোডটি এই বকবককে নীরব করতে কাজ করেছিল।

<logger name="org.apache.commons.httpclient">
    <level value="fatal"/>
</logger>

<logger name="httpclient.wire.header">
    <level value="fatal"/>
</logger>

<logger name="httpclient.wire.content">
    <level value="fatal"/>
</logger>

4

আপনার log4.properties- - আমি কি নীচের মতো এই সেটটি রাখি এবং অন্য কোনও org.apache.httpলগার ফাইলটিতে সেট করা নেই ?

-org.apache.commons.logging.simplelog.log.org.apache.http=ERROR

এছাড়াও আপনার লগ org.apache.http4j প্রোপার্টি ফাইলে যদি আপনার কোনও লগ স্তর নির্দিষ্ট না করে থাকে তবে তা log4j.rootLoggerস্তরটির উত্তরাধিকারী হবে । সুতরাং আপনি যদি এরআরআর log4j.rootLoggerবলতে চান org.apache.httpএবং আপনার লগ 4j.properties এ সেটিংস নিয়ে যান যা এটি কেবল ERRORউত্তরাধিকারসূত্রে লগ বার্তাগুলি তৈরি করে।

হালনাগাদ:

একটি commons-logging.propertiesফাইল তৈরি করুন এবং এটিতে নিম্নলিখিত লাইনটি যুক্ত করুন। এই ফাইলটি আপনার ক্লাসস্পটে রয়েছে তাও নিশ্চিত করুন।

org.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.Log4jFactory

ওপিতে প্রার্থনা করার জন্য একটি সম্পূর্ণ লগ 4 জ ফাইল এবং কোড যুক্ত করেছে। এই log4j.properties আপনার ক্লাসস্প্যাটে থাকা উচিত। আমি মুহুর্তের জন্য stdout ধরে নিচ্ছি।

log4j.configuration=log4j.properties 
log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n

log4j.logger.org.apache.http=ERROR

এখানে কিছু কোড যা আপনার শ্রেণিতে যুক্ত করতে হবে লগারটি চাওয়ার জন্য।

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 

public class MyClazz
{
    private Log log = LogFactory.getLog(MyClazz.class);
    //your code for the class
}

HTTPClient ব্যবহার করার চেষ্টা করার আগে আমার লগ 4j.properties ফাইলের প্রয়োজন ছিল না। আমি আপনার লাইনগুলি আমার এসসিআর / পরীক্ষা / সংস্থান / লগ 4 জে.প্রপার্টি ফাইলগুলিতে রাখার চেষ্টা করেছি তবে এতে কোনও তফাত হয়নি। লগ 4j.properties- এ কমন্স.লগিং বিকল্পগুলি রাখা কি ঠিক?
ম্যাট বেকার

হ্যাঁ কমন্স-লগিং লগ 4j এর চারপাশে কেবল একটি মোড়ক। আপনি কিভাবে আপনার পরীক্ষার ক্লাসে লগারটি প্রার্থনা করবেন?
কুলবিয়ান্স

(আপনার আপডেটের পরে) আমি এটি তৈরি করেছি যাতে উপরের লাইনটি আমার লগ 4j.properties ফাইলটিতে একমাত্র ছিল এবং এটি এখনও সমস্ত কিছু ছড়িয়ে দেয়।
ম্যাট বেকার

1
আমি লগারটি প্রার্থনা করি না, এইচটিটিপিপ্লায়েন্ট এটি নিজেই করে।
ম্যাট বেকার

এটি আপনি যে লিঙ্কটি দিয়েছিলেন তাতে বলা হয়েছে - "দ্রষ্টব্য: লগ 4 জে এইচটিপিপিপ্লায়েন্ট বিতরণে অন্তর্ভুক্ত নেই।" সুতরাং আপনাকে অবশ্যই এটি আপনার ক্লাসস্প্যাটে যুক্ত করতে হবে। আপনি কি স্টাডআউট (কনসোল) বা লগ ফাইলে আউটপুটটি দেখছেন? আমি কোডটি দিয়ে আপনার জন্য অনুরোধ করার জন্য একটি নমুনা লগ 4 এইচ ফাইল তৈরি করব।
কুলবিয়ান্স

4

সহজ উপায় লগ 4 জ এবং এইচটিপিপিএলিয়েন্ট (এই ক্ষেত্রে v3.1, উচ্চতর জন্য কাজ করা উচিত, ছোটখাট পরিবর্তন প্রয়োজন হতে পারে)

নিশ্চিত করুন যে সমস্ত নির্ভরতা সঠিক, এবং আপনার ডাউনলোডগুলি এমডি 5 !!!!

import org.apache.commons.httpclient.HttpClient;  
import org.apache.log4j.Level;  
import org.apache.log4j.Logger;  

---

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.WARN);
Logger.getLogger("httpclient.wire.header").setLevel(Level.WARN);
Logger.getLogger("httpclient.wire.content").setLevel(Level.WARN);

HttpClient client = new HttpClient();

আমি এটি mainপদ্ধতিতে রাখা উচিত?
পার্সিকার

@ পার্সার আপনি পারেন
WiR3D

4

আমি বেশ কিছুদিন ধরে একই ইস্যুতে জর্জরিত হয়েছি এবং অবশেষে এটি অনুসন্ধান করার সিদ্ধান্ত নিয়েছি। দেখা গেল সমস্যাটি হ'ল আমার প্রকল্পটির http-builder-0.5.2.jar এর উপর নির্ভরতা ছিল যা নিজের মধ্যে একটি log4j.xML ফাইল বান্ডিল করে। এবং যথেষ্ট নিশ্চিত, org.apache.http.wire এর জন্য লগ স্তরটি ছিল ডিবুগ! আমি যেভাবে খুঁজে পেয়েছি তা কেবলমাত্র আমার নির্ভরতার সমস্ত জার ফাইলগুলির মধ্যে দিয়ে যাওয়া এবং "জার টিভিএফ" করা এবং লগ 4 জে গ্রেপিং করা।

যদিও এই আবিষ্কারটি আমার এইচটি-পি-বিল্ডার নির্ভরতার সংস্করণ 0.6-এ উন্নীত করার চূড়ান্ত সমাধানের দিকে পরিচালিত করেছে, লগ 4j.xML ফাইলটিকে জার ফাইলে বান্ডিল করার সময় এটি বিকাশকারীদের মনের মধ্যে দিয়ে গেছে এমনটি এখনও আমাকে অবাক করে দেয়। যাইহোক, এটি সম্ভবত এই থ্রেডের সাথে প্রাসঙ্গিক নয়। তবে আমি বুঝতে পেরেছিলাম যে এই সমাধানটি উল্লেখ করার জন্য আমি দরকারী যে আমি পেয়েছি যে আমি যখন এখন আগে কোনও সমাধান অনুসন্ধান করছি, আমার কখনই উত্থিত হয়নি। আশা করি কেউ এই কাজে লাগবে।


ব্যবহার করার সময় অনুরূপ সমস্যা <!-- https://mvnrepository.com/artifact/com.fredericboisguerin.excel/excel-reader-writer --> <dependency> <groupId>com.fredericboisguerin.excel</groupId> <artifactId>excel-reader-writer</artifactId> <version>2.1</version> </dependency>। নির্ভরতা সরিয়ে ফেলা হয়েছে এবং লগগুলি চলে গেছে। ধন্যবাদ!
অ্যাডম

3

JWebUnit নিয়ে আমারও একই সমস্যা ছিল। দয়া করে লক্ষ্য করুন যে আপনি যদি বাইনারি বিতরণ ব্যবহার করেন তবে লগব্যাক একটি ডিফল্ট লগার। JWebUnit এর সাথে log4j ব্যবহার করতে আমি নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করেছি:

  • লগব্যাক জারগুলি সরানো হয়েছে
  • sfl4j - slf4j-log4j12-1.6.4.jar এর জন্য লড 4 জে ব্রিজ লাইব্রেরি যুক্ত করুন
  • log4j.properties যোগ করুন

সম্ভবত আপনাকে লগব্যাক জারগুলি সরিয়ে ফেলতে হবে না তবে s404j লগ 4 জে ব্যবহার করতে বাধ্য করার জন্য আপনার কিছু অতিরিক্ত পদক্ষেপের প্রয়োজন হবে


ধন্যবাদ, ওপেনআরডিএফ ব্যবহার করার সময় আমারও একই সমস্যা ছিল। এই থ্রেডের অন্যান্য সমস্ত টিপসের মনে হয়েছিল আমি লগব্যাক জারগুলি সরিয়ে না দেওয়া পর্যন্ত কোনও প্রভাব ফেলবে না, এখন লগটি দুর্দান্তভাবে শান্ত।
আমারিলিয়ন

3

নিম্নলিখিত 2 লাইন আমার সমস্যার সম্পূর্ণ সমাধান করেছে:

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.ERROR);
Logger.getLogger("httpclient").setLevel(Level.ERROR);

এটি আমার পক্ষেও কাজ করেছে, তবে আমার দরকার নেই: লগার.জেটলগার ("org.apache.commons.httpclient")।
জামেল টমস

3

লগ 4j সম্পত্তি ফাইলে নীচের লাইনগুলি যুক্ত করুন এবং এটি HTTP লগগুলি বন্ধ করে দেবে: - log4j.logger.org.apache.http = বন্ধ


ইউনিট পরীক্ষায় (যদি প্রধান হয় তবে প্রধানত) একটি @BeforeClass public static void BeforeClass() { PropertyConfigurator.configure("log4j.properties"); ...}একক লাইন দিয়ে log4j.properties ফাইল যুক্ত করুন log4j.logger.org.apache.http = OFF মূলটিতে থাকা উচিত (এসসিআর ফোল্ডারের ঠিক উপরে)
সাশা বন্ড

3

আমারও একই সমস্যা ছিল। [main] DEBUG org.apache.http.wireপরীক্ষা চালানোর সময় পুরো কনসোলটি ভরে গেছে ।

যে সমাধানটি আমার পক্ষে কাজ করেছিল তা হ'ল লগব্যাক-টেস্ট.এক্সএমএল এসসিআর / টেস্ট / রিসোর্স / লগব্যাক-টেস্ট.এক্সএমএল হিসাবে তৈরি হয়েছে https://github.com/bonigarcia/webdrivermanager-example/blob/master/src/test/resources / লগব্যাকটিস্ট.এক্সএমএল (রেফ - https://github.com/bonigarcia/webdrivermanager/issues/203 )

আমার লগিং ইনফোগুলি দেখতে, আমি আমার প্যাকেজের নাম দিয়ে লগার নাম = "io.github.bonigarcia" প্রতিস্থাপন করেছি

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.mypackage" level="DEBUG" />
    <logger name="org" level="INFO" />
    <logger name="com" level="INFO" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

2

অনুরূপ সমস্যার সমাধান অনুসন্ধান করার সময় আমাকে এই পোস্টে নিয়ে যাওয়া হয়েছিল। টিমের উত্তরটি খুব সহায়ক ছিল। ম্যাট বেকারের মতো, আমি খুব বেশি কনফিগারেশন ছাড়াই কেবল httpClient লগটি বন্ধ করতে চাই। যেহেতু আমরা নিশ্চিত ছিলাম না যে সাধারণ-লগিংয়ের নীচে লগিং বাস্তবায়ন ব্যবহৃত হয়েছিল, আমার সমাধানটি ক্লাসের পথে লগ 4 জার ফাইলটি নিক্ষেপ করে লগ 4 জে ব্যবহার করে জোর করা হয়েছিল। লগ 4j কনফিগারেশনের ডিফল্ট সেটিং সাধারণ-httpclient ডিবাগ আউটপুট বন্ধ করে দেয়। অবশ্যই, এটিকে আরও দৃ make় করার জন্য, আপনি আপনার লগিং কনফিগারেশনগুলি আরও সংজ্ঞায়িত করতে সাধারণ-ব্লগিং.প্রেপার্টি এবং লগ 4j.properties ফাইল তৈরি করতে পারেন।


2

চেষ্টা করুন

org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog

আপনার কমন্স-ব্লগিং.প্রোপার্টিগুলিতে


2

অ্যাপাচি 4.5.৪.৩ এর জন্য, যদি আপনি সমস্ত অ্যাপাচি HTTP ক্লায়েন্ট লগিংয়ের জন্য সতর্কতার জন্য স্তরটি সরাতে চান তবে ব্যবহার করুন:

log4j.logger.org.apache=WARN

2

ক্লাসের মূল পথে এবং নীচের সেটিংয়ে "লগব্যাক.এক্সএমএল" যুক্ত করা আমার পক্ষে এটি কাজ।

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <logger name="org.apache" level="WARN"/>
    <logger name="httpclient" level="WARN"/>
</configuration>

1

Jwebunit ইন্টিগ্রেশন পরীক্ষা চালানোর সময় আমার একই সমস্যা ছিল। আমি লগব্যাক বাদ দিয়ে এবং slf4j-log4j12 এ যুক্ত করে এটি ঠিক করেছি:

<dependency>
  <groupId>net.sourceforge.jwebunit</groupId>
  <artifactId>jwebunit-htmlunit-plugin</artifactId>
  <version>3.0</version>
  <exclusions>
    <exclusion>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>

1

এটি একবার খুঁজে বের করতে আমার বয়স হয়েছিল, আপনার এটি প্রয়োজন:

log4j.logger.httpclient.wire=ERROR

আমি অনুমান করি যে এইচটিপিপ্লিয়েন্টটি "httpclient.wire" এর লগার নাম হিসাবে ব্যবহার করে, "org.apache.commons.httpclient" নয়।

লুক্কায়িত বাগার্স।


1

এটি আমার পক্ষে কাজ করেছে।

System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", "error");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "error");
System.setProperty("log4j.logger.org.apache.http", "error");
System.setProperty("log4j.logger.org.apache.http.wire", "error");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "error");

0

কমন্স-লগিং সম্পূর্ণরূপে ব্যবহার হতে বাধা দেওয়ার জন্য ম্যাভেন এনফোর্সর প্লাগইনটি ব্যবহার করা আমার পক্ষে সবচেয়ে ভাল সমাধান ছিল। তারপরে আমি পরিবর্তে লগিংয়ের জন্য slf4j নির্ভরতা যুক্ত করেছি। সুতরাং আপনার pom.xml এ নিম্নলিখিতগুলি যুক্ত করুন

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>[your version here]</version>
    </dependency>

এবং maven-enforcer প্লাগইন যুক্ত করুন

<plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-enforcer-plugin</artifactId>
           <version>[your version here]</version>
           <executions>
               <execution>
                   <id>enforce</id>
                   <configuration>
                       <rules>
                           <DependencyConvergence />
                           <bannedDependencies>
                               <excludes>
                                   <exclude>commons-logging:commons-logging</exclude>
                               </excludes>
                           </bannedDependencies>
                       </rules>
                   </configuration>
                   <goals>
                       <goal>enforce</goal>
                   </goals>
               </execution>
           </executions>
       </plugin>

Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M2:enforce (enforce) on project gs-serving-web-content: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed
পার্সিকার

0

আমার বিশ্রামের টেমপ্লেটের জন্য এইচটিটিপি কম্পোনেন্টস ক্লায়েন্টএইচটিপিআরকেস্টফ্যাক্টরি সেট করার পরে আমি এই জাতীয় সমস্যাটি অনুভব করেছি।

OkHttpClientHttpRequestFactory সেট করা ট্র্যাশ লগিংয়ের সাথে সমস্যার সমাধান করা উচিত।


0

পোম ফাইলে কেবল এই দুটি নির্ভরতা যুক্ত করুন: আমি এর আগে আলোচনার চেষ্টা করার পরে চেষ্টা করেছি এবং সফল হয়েছি।

<!--Using logback-->
<dependency>
   <groupId>commons-logging</groupId>
   <artifactId>commons-logging</artifactId>
   <version>1.2</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

কমন্স-লগিং -> লগব্যাক এবং ডিফল্ট তথ্য যখন ডিবাগ উপস্থিত থাকবে না; তুমি ব্যবহার করতে পার:

private static Logger log = LoggerFactory.getLogger(HuaweiAPI.class);

আপনি যে তথ্য লগ করতে চান তা নির্ধারণ করতে: চূড়ান্ত ফলাফলের মতো। আমি যে তথ্য লগ করতে চাই তা উপস্থিত থাকবে।


0

আমি উপরোক্ত সমস্ত সমাধান চেষ্টা করেও কোনও লাভ হয়নি। আমার কাছে সবচেয়ে কাছাকাছি এসে পৌঁছেছে এমন একটি হ'ল লগব্যাক.এক্সএমএল তৈরি করার পরামর্শ দিয়েছে। এটি কাজ করেছে, তবে কিছুই লগ করা হয়নি। লগব্যাক.এক্সএমএল দিয়ে চারপাশে খেলার পরে, এটিই আমি শেষ করেছি

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <withJansi>true</withJansi>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    </encoder>
  </appender>
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>

এখন DEBUG এর নীচের সমস্ত স্তরগুলি সঠিকভাবে লগ হয়।


0

সঙ্গে:

  • লগ 2 জ 2 2.11.2
  • এইচটিপিপি্লিয়েন্ট 4.5.7 (ইলাস্টিকসर्च 7.0.0 বাকী ক্লায়েন্ট)
  • কনফিগার করতে বৈশিষ্ট্য ফাইল ব্যবহার করে

এক যোগ করতে পারেন:

logger.httpclient.name=org.apache.http
logger.httpclient.level=info

উপরের উদাহরণে 'httpclient' আপনার পছন্দমত যৌক্তিক নাম হিসাবে রয়েছে।

(জাভা 11 ওপেনএফএক্সএক্স অ্যাপ্লিকেশনটিতে পরীক্ষিত))


0

আমার ক্ষেত্রে আমি এক্সএমএল কনফিগারেশন ব্যবহার করি এবং আমি এটি কনফিগারেশন ফাইলে যুক্ত করি

<logger name="org.apache.http">
    <level value="warn"/>
</logger>


0

আমার জন্য, log4j প্রোপ ফাইলের নীচের লাইনগুলি এইচটিপিপিপ্লায়েন্ট লগিং থেকে আসা সমস্ত গণ্ডগোল পরিষ্কার করেছে ... হুররে !!! :)

log4j.logger.org.apache.http.headers=ERROR
log4j.logger.org.apache.http.wire=ERROR
log4j.logger.org.apache.http.impl.conn.PoolingHttpClientConnectionManager=ERROR
log4j.logger.org.apache.http.impl.conn.DefaultManagedHttpClientConnection=ERROR
log4j.logger.org.apache.http.conn.ssl.SSLConnectionSocketFactory=ERROR
log4j.logger.org.springframework.web.client.RestTemplate=ERROR
log4j.logger.org.apache.http.client.protocol.RequestAddCookies=ERROR
log4j.logger.org.apache.http.client.protocol.RequestAuthCache=ERROR
log4j.logger.org.apache.http.impl.execchain.MainClientExec=ERROR
log4j.logger.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator=ERROR
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.