মাভেন ব্যবহার করা হলে, আপনি সাধারণত জাবা বা সংস্থার অধীনে লগ 4j.properties রাখেন?


128

প্রচলিত মাভেন ডিরেক্টরিগুলি ব্যবহার করার সময় লগ 4j.properties ফাইলটি আমার কোথায় রাখা উচিত?


6
এসআরসি / পরীক্ষা / সংস্থানসমূহ - আপনার নিদর্শনটির গ্রাহক স্থাপনার জন্য প্রয়োজনীয় লগিং স্তরগুলি নির্ধারণ করবেন। আপনি যদি বাণিজ্যিক কাজের জন্য এটি করেন তবে আমি slf4j এর সুপারিশ করব। এটি স্থাপনার সময়ে লগিং ফ্রেমওয়ার্কগুলি স্যুইচ করার বিকল্প দেয়। slf4j.org
ডেভিড ভিক্টর

2
বিটিডাব্লু আপনি যদি কোনও বৈশিষ্ট্য / এক্সএমএল কনফিগারেশন ফাইল ছাড়াই লগ 4 জে ব্যবহারের সম্ভাব্য পরীক্ষা করতে চান তবে বিটিডাব্লু। ' Logging.apache.org/log4j/1.2/manual.html - কনফিগারেশন' থেকে "" বেসিক কনফিগুয়েটার.কনফিগার পদ্ধতিটির অনুরোধ একটি সহজ লগ 4 জে সেটআপ তৈরি করে। " আরও দেখুন: লগিং.এপাচি.আর.আগা.এলগ.এজ.এলগ.জেজ ২.১.২
ডেভিড ভিক্টর

উত্তর:


141

src/main/resources এটির জন্য "স্ট্যান্ডার্ড প্লেসমেন্ট"।

আপডেট: উপরের প্রশ্নগুলির উত্তর দেয়, তবে এটি সেরা সমাধান নয়। এ সম্পর্কিত অন্যান্য উত্তর এবং মন্তব্যগুলি দেখুন ... আপনি সম্ভবত নিজের লগিং বৈশিষ্ট্যগুলি জারের সাথে শিপিং না করে বরং ক্লায়েন্টের কাছে রেখে দেবেন (উদাহরণস্বরূপ অ্যাপ্লিকেশন-সার্ভার, স্টেজ পরিবেশ ইত্যাদি) পছন্দসই লগিংটি কনফিগার করতে। সুতরাং, এটি দেওয়া src/test/resourcesআমার পছন্দসই সমাধান।

দ্রষ্টব্য: ক্লায়েন্ট / ব্যবহারকারীর কাছে কংক্রিট লগ কনফিগারেশন রেখে যাওয়ার কথা বলার log4jসাথে slf4jসাথে আপনার অ্যাপ্লিকেশনটিতে প্রতিস্থাপনের বিষয়টি বিবেচনা করা উচিত ।


আমি কোনও সংস্থান নির্দেশিকা তৈরি করা যায়নি। আমার নিজে এটি করার দরকার আছে?
user496949

3
হাঁ। ম্যানুয়ালি তৈরি করুন resourcesএবং log4j.propertiesউত্তরে উল্লিখিত ফোল্ডারে।
নিশান্ত

@ user496949: এর অধীন ফাইলগুলি src/main/resourcesডিফল্ট হিসাবে অনুলিপি করা হবেtarget/classes
স্প্ল্যাশ করুন

17
আপনার নিদর্শনগুলির অংশ হিসাবে আপনি আপনার লগ 4 জে সেটিংস রফতানির পরিকল্পনা না করে - এটি এসআরসি / পরীক্ষা / সংস্থার অধীনে রাখাই আরও ভাল
ডেভিড ভিক্টর

1
@ উত্পাদিত নিদর্শনগুলি (জার, যুদ্ধ ইত্যাদি) থেকে বাদ দেওয়ার জন্য ফেরাসেদেহ এবং কেবল পরীক্ষার সময় ব্যবহার করা হবে, "যদি না আপনি আপনার শিল্পকর্মের অংশ হিসাবে লগ 4 জে সেটিংস রপ্তানি করতে চান"।
আলী শাকিবা

60

এটি কেবল putting src/main/resourcesোকাতেই এটি শিল্পকর্মের অভ্যন্তরে বান্ডিল হবে। উদাহরণস্বরূপ, যদি আপনার নিদর্শনটি একটি জার হয়, আপনার লগিংটি log4j.propertiesকনফিগারযোগ্য করার প্রাথমিক বিন্দুটি হারাতে এটির ভিতরে ফাইলটি থাকবে ।

আমি সাধারণত src/main/resourcesএটিকে রাখি এবং এটির মতো লক্ষ্যবস্তু হওয়ার জন্য এটি আউটপুট হিসাবে সেট করে:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${project.build.directory}</targetPath>
            <includes>
                <include>log4j.properties</include>
            </includes>
        </resource>
    </resources>
</build>

অতিরিক্তভাবে, log4j আসলে দেখতে এটির জন্য, আপনাকে শ্রেণি পথে আউটপুট ডিরেক্টরি যুক্ত করতে হবে। আপনার নিদর্শনটি যদি একটি এক্সিকিউটেবল জেআর হয় তবে আপনি সম্ভবত এটি তৈরির জন্য ম্যাভেন-এসেম্বলি-প্লাগইন ব্যবহার করেছেন। এই প্লাগইনটির ভিতরে আপনি জেআর-এর বর্তমান ফোল্ডারটিকে শ্রেণীর পথে যুক্ত করতে Class-Pathপারেন এর মতো একটি ম্যানিফেস্ট এন্ট্রি যুক্ত করে :

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.your-package.Main</mainClass>
            </manifest>
            <manifestEntries>
                <Class-Path>.</Class-Path>
            </manifestEntries>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

এখন log4j.properties ফাইলটি আপনার জেআর ফাইলের ঠিক পাশেই থাকবে, স্বাধীনভাবে কনফিগার করা যাবে।

Eclipse থেকে সরাসরি আপনার অ্যাপ্লিকেশনটি চালানোর resourcesজন্য আপনার রান কনফিগারেশনে আপনার ক্লাসপাথে ডিরেক্টরি যুক্ত করুন : ট্যাবটি Run->Run Configurations...->Java Application->Newনির্বাচন করুন Classpath, Advancedআপনার src/resourcesডিরেক্টরিতে নির্বাচন করুন এবং ব্রাউজ করুন ।


2
অন্য বিকল্পটি হতে পারে এটি এসসিআর / পরীক্ষা / সংস্থানগুলির মধ্যে রাখা যাতে এটি বান্ডিল না হয়।
রজারডপ্যাক

কি দারুন. তার জন্য ধন্যবাদ. এটি আমার প্রয়োজন ছিল!
blissfool

@ জোল্টন, আপনার পরামর্শ অনুসারে ক্লাসপথে আউটপুট ডিরেক্টরি যুক্ত করা আমার পক্ষে কঠিন বলে মনে হচ্ছে। আমি নিজে নিজেই এটির মতো কোনও উপায় করতে পারি, যেমন নির্দিষ্ট প্রকল্পের .classpath ফাইলটিতে যান এবং এই লগ 4j আউটপুট ডিরেক্টরিটি যুক্ত করুন যাতে অ্যাপ্লিকেশনটি একটি .war ফাইলে বান্ডিল হওয়ার পরে log4j .properties ফাইলটি দেখতে পারে। এছাড়াও, টার্গেটপথ ট্যাগটি, মানটি যেমন হয় তেমন ব্যবহার করা ${project.build.directory}উচিত বা আমার স্থানীয় ড্রাইভে প্রকল্পটি যে সত্যিকারের পথে বাস করে তা সম্পাদনা করা উচিত?
আইরেটি

26

এর জন্য কিছু "ডেটা মাইনিং" অ্যাকাউন্টগুলি src/main/resourcesসাধারণ জায়গা।

গুগল কোড অনুসন্ধানে ফলাফল :

  • src/main/resources/log4j.properties: 4877
  • src/main/java/log4j.properties: 215

4
20 মিনিট আগে যে উত্তর দেওয়া হয়েছিল তার চেয়ে এই উত্তরটি কীভাবে আলাদা? এছাড়াও, এটি সঠিক resourcesনয় resource, যদি আমি মনে করি না।
নিশান্ত

6
@ নিশান্ত: এটি আলাদা নয়, কারণ যখন আমি উত্তর বাক্সটি খুলি তখন আমি পিসি ছেড়ে দিয়েছিলাম। ফিরে এসে প্রশ্নের উত্তর দেওয়ার পরে আমি মিস করেছি যে প্রশ্নের উত্তর ইতিমধ্যে ছিল। resourceশুধুমাত্র টাইপো ছিল
স্প্ল্যাশ

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

4
সঠিক উত্তরটি হ'ল সিআরসি / এক্সএক্সএক্সএক্স / সংস্থানসমূহ - এটি কোনও সম্মেলন নয়। দেখুন: maven.apache.org/plugins/maven-resources-plugin/example/… - এখানে ' এক্সএক্সএক্সএক্স ' 'মেন' বা 'পরীক্ষা' হতে পারে। যদি আপনি প্রাক-কনফিগার করা লগিং স্তরগুলি সরবরাহ করতে না চান তবে 'src / টেস্ট / রিসোর্স' - এর মাধ্যমে পরীক্ষার জন্য প্রয়োজনীয় হিসাবে লগিং কনফিগার করা বুদ্ধিমানের কাজ এবং আপনার নিদর্শনটির গ্রাহককে লগিং স্তর নির্ধারণ করার অনুমতি দেয়।
ডেভিড ভিক্টর

22
"ব্রিজটি ঝাঁপ দাও" এর জন্য গুগলের ফলাফল: 18.200.000। "ব্রিজ থেকে লাফিয়ে
পড়বেন

9

প্রকল্পটি আরম্ভ করার জন্য ব্যবহৃত সংস্থানগুলি এসআরসি / প্রধান / সংস্থান ফোল্ডারে অগ্রাধিকার দেওয়া হয় are বিল্ড চলাকালীন এই সংস্থানগুলির লোডিং সক্ষম করতে, একটি বিল্ড রিসোর্স হিসাবে maven প্রজেক্টে pom.xML এ সহজেই এন্ট্রি যুক্ত করা যায়

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering> 
        </resource>
    </resources>
</build> 

অন্যান্য .properties ফাইলগুলিও আরম্ভের জন্য ব্যবহৃত এই ফোল্ডারে রাখা যেতে পারে। ফিল্টারিং সত্য হিসাবে সেট করা থাকে যদি আপনি রিসোর্স ফোল্ডারের প্রোপার্টি ফাইলগুলিতে কিছু ভেরিয়েবল রাখতে চান এবং তাদের প্রোফাইল ফিল্টার প্রোপার্টি ফাইল থেকে পপুলেট করতে চান, যা এসসিআর / মেইন / ফিল্টারগুলিতে রাখা হয় যা প্রোফাইল হিসাবে সেট করা থাকে তবে এটি সম্পূর্ণরূপে আলাদা ব্যবহারের ক্ষেত্রে হয় । আপাতত, আপনি এগুলি উপেক্ষা করতে পারেন।

এটি একটি দুর্দান্ত রিসোর্স মাভেন রিসোর্স প্লাগইন , এটি দরকারী, কেবলমাত্র অন্যান্য বিভাগের মাধ্যমেও ব্রাউজ করুন।


আপনি যদি উপরের মাভেন স্নিপেটটি কেবল অনুলিপি করে পেস্ট করেন তবে অনুগ্রহ করে নোট করুন যে এটি </
b

6

অন্য জায়গায় রিসোর্স ফাইল স্থাপন করা আপনি ব্যবহার করতে পারেন এমন সেরা সমাধান নয়:

<build>
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </resource>
  </resources>
<build>

উদাহরণস্বরূপ যখন জাভা ক্লাসের সাথে সংস্থানসমূহের ফাইলগুলি (যেমন jaxb.properties) গভীর প্যাকেজগুলির ভিতরে যায়।


1

যদি আপনার লগ 4j.properties বা log4j.xML ফাইলটি এসসিআর / প্রধান / সংস্থানসমূহের আওতায় না পাওয়া যায় তবে এই সম্পত্তিConfigurator.configure ("log4j.xML") ব্যবহার করুন;

   PropertyConfigurator.configure("log4j.xml");
   Logger logger = LoggerFactory.getLogger(MyClass.class);
   logger.error(message);

0

বিল্ড ট্যাগগুলির অভ্যন্তরে আপনার pom.xML এ সংস্থানগুলি থেকে নীচের কোডটি যুক্ত করুন। সুতরাং এর অর্থ সম্পদ ট্যাগগুলি অবশ্যই আপনার pom.xML এ বিল্ড ট্যাগের অভ্যন্তরে থাকতে হবে

<build>
    <resources>
        <resource>
            <directory>src/main/java/resources</directory>
                <filtering>true</filtering> 
         </resource>
     </resources>
<build/>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.