আমি কোথায় জুনবিট পরীক্ষার ক্লাসে লগ 4 জে কনফিগার করব?


85

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

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


আমি এখানে লগ 4
জে

উত্তর:


51

LogManagerশ্রেণী নির্ধারণ করে যা log4j কনফিগ একটি ব্যবহার করার জন্য স্ট্যাটিক ব্লক যা বর্গ লোড হয় চালায়। শেষ ব্যবহারকারীদের উদ্দেশ্যে তিনটি বিকল্প রয়েছে:

  1. আপনি যদি log4j.defaultInitOverrideমিথ্যাতে নির্দিষ্ট করে থাকেন তবে এটি log4j মোটেও কনফিগার করবে না।
  2. ম্যানুয়ালি নিজেই কনফিগারেশন ফাইলের পাথ নির্দিষ্ট করুন এবং শ্রেণিপথ অনুসন্ধানটি ওভাররাইড করুন। নিম্নলিখিত যুক্তি ব্যবহার করে আপনি সরাসরি কনফিগারেশন ফাইলের অবস্থান নির্দিষ্ট করতে পারেন java:

    -Dlog4j.configuration=<path to properties file>

    আপনার পরীক্ষা রানার কনফিগারেশন।

  3. আপনার পরীক্ষার সময় log4j কনফিগারেশন ফাইলের জন্য ক্লাসপথ স্ক্যান করতে লগ 4 জকে মঞ্জুরি দিন। (ডিফল্ট)

আরও দেখুন অনলাইন ডকুমেন্টেশন


এটি কীভাবে জানবে যে এটি একটি "log4j কনফিগারেশন ফাইল?" ফাইলের নাম কী? (log4j.xML?)
চাদ

4
@ চাদ: আপনার প্রশ্নের সমাধানের জন্য আমি আমার উত্তর সম্পাদনা করেছি। এটি কীভাবে বাস্তবায়িত হয় তা দেখতে দয়া করে স্থির ব্লকের লিঙ্কটি দেখুন।
পল মরি

আমি log4j2 ব্যবহার করছি এবং আমার একটি ফাইল নির্দেশ করে নিম্নলিখিত সেটিং ব্যবহার করতে ছিল: -Dlog4j.configurationFile=log4j2.xml। এছাড়াও, যদি আপনি ডিবাগ লোড করার চেষ্টা করছেন / প্রারম্ভে, এই সেটিং উপযোগী হতে পারে: -Dlog4j2.debug=true
কেন্ট

এই উত্তরটি সম্পর্কে আরও কিছু নির্দিষ্ট হওয়ার উপায় কী?
মার্কথেগ্রিয়া

61

আমি সাধারণত একটি লোগোজেজে.এমএমএল ফাইলটি এসআরসি / পরীক্ষা / সংস্থানগুলিতে রেখেছি এবং লগ 4 জে নিজেই এটি সন্ধান করি: কোনও কোডের প্রয়োজন নেই, ডিফল্ট লগ 4 জ্ ইনিশিয়ালাইজেশন এটি বাছাই করবে। (আমি সাধারণত আমার নিজের লগারগুলি যে কোনও উপায়েই 'ডিবিইউজি'-তে সেট করতে চাই)


6
স্ট্যান্ডার্ড বিল্ডিং পরীক্ষার জন্য আমি Log4j কে সতর্কতা বা এমনকি ত্রুটিতে সেট করব। পরীক্ষাগুলি সফল হলে (নেতিবাচক পরীক্ষাগুলিও) কোনও লগিং হওয়া উচিত নয়, যা ব্যবহারকারীদের দৃষ্টি আকর্ষণ করে।
কেইকি

4
হ্যাঁ লগ 4 জে 1.x-এর জন্য এটি সঠিক। লগ 4j2 এর জন্য আপাতদৃষ্টিতে আপনি আরও "বহিরাগত" ফাইলগুলি log4j2-test.properties ফাইলের মতো ব্যবহার করতে পারেন ... logging.apache.org/log4j/2.x/manual/configration.html :)
রোজারডপ্যাক

6

আপনি জাভা (এসএলএফ 4 জে) জন্য সিম্পল লগিং ফেক্যাডে সন্ধান করতে পারেন । এটি একটি মুখোমুখি যা Log4j এর চারপাশে মোড় নেয় যা লগ 4 জের মতো প্রাথমিক সেটআপ কলের প্রয়োজন হয় না। এপিআই পার্থক্যগুলি ন্যূনতম হওয়ায় লগ 4 জে এসএলএফ 4 জ এর জন্য সরিয়ে আনা মোটামুটি সহজ।


5

আমি log4j.xML এ সিস্টেমের বৈশিষ্ট্যগুলি ব্যবহার করি:

...
<param name="File" value="${catalina.home}/logs/root.log"/>
...

এবং এর সাথে পরীক্ষা শুরু করুন:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.16</version>
    <configuration>
        <systemProperties>
            <property>
                <name>catalina.home</name>
                <value>${project.build.directory}</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.