লগার (লগ 4 জ) এর জন্য কোনও অ্যাপেন্ডার খুঁজে পাওয়া যায়নি?


368

আমি আমার বিল্ডপথে লগ 4 জে রেখেছি, তবে আমি আমার অ্যাপ্লিকেশনটি চালানোর সময় নিম্নলিখিত বার্তাটি পাই:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

এই সতর্কতাগুলির অর্থ কী? এখানে অ্যাপেন্ডার কী?


5
এটি রানটাইম সতর্কতা বলে মনে হচ্ছে। সংকলন করার সময় আপনি কি নিশ্চিত যে এটিকে দেখেছেন?
মাবা

5
আপনি কি সতর্কতার শেষ লাইনে URL টি দেখার চেষ্টা করেছেন?
জেস্পার

4
হ্যাঁ!!! তবে এটি বেশি কিছু বলতে পারে না ... আমি জানতে পেরেছিলাম যে আমার অ্যাপেন্ডারটি কনফিগার করতে আমার একটি সম্পত্তি ফাইল দরকার!
ম্যাক্সিমাস

অ্যাপেন্ডার যুক্ত করতে কনফিগারেশন ফাইলগুলি ম্যানুয়ালি সম্পাদনা করুন। আপনার সঠিক ও বৈধ কনফিগারেশন ডকুমেন্ট রয়েছে তা নিশ্চিত করুন।
রোমান সি

উত্তর:


464

লগ 4 গাইড সম্পর্কে এই সংক্ষিপ্ত ভূমিকাটি কিছুটা পুরানো তবে এখনও বৈধ।

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


কেবল আপনাকে যেতেই আপনার কাছে নিতে পারেন দুটি সহজ পদ্ধতি।

প্রথমটি হ'ল আপনার প্রধান পদ্ধতিতে এই লাইনটি যুক্ত করা:

BasicConfigurator.configure();

দ্বিতীয় পদ্ধতি হ'ল এই স্ট্যান্ডার্ডটি log4j.properties(উপরে বর্ণিত গাইড থেকে নেওয়া) ফাইলটি আপনার ক্লাসপথে যুক্ত করা:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

3
ঠিক প্রথম পদক্ষেপ ঠিক আছে। লগ 4
জে গাইডের

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

3
ইন্টেলিজি আইডিয়ায় মডিউল সেটিংটি খুলুন এবং আপনার রিসোর্স ফোল্ডারটি নির্বাচন করুন এবং সংস্থানগুলি ক্লিক করুন, এটি স্বয়ংক্রিয়ভাবে আপনার প্রতিটি সংস্থান ক্লাসপথে যুক্ত করবে।
ওয়াকাস

1
সাহায্য করেনি। আমি সি ++ এর জন্য অ্যালিপস নিওন ব্যবহার করি এবং আমি লোগ 4j.propertiesটি গ্রহনের সাথে সাথে এক্সিকিউটেবলের পাশাপাশি রেখেছিলাম এবং কোনও সহায়তা করেনি
নাদভ বি

log4j.rootLogger=DEBUG, A1আমি সর্বদা অনুপস্থিত ছিল লাইন।
মোহাম্মদ ফয়সাল

74

দেখে মনে হচ্ছে আপনাকে আপনার log4j.propertiesফাইলের অবস্থানটি Eclipse এর Classpath এ যুক্ত করতে হবে।

আপনার প্রকল্পটি Eclipse এ খোলা আছে তা নিশ্চিত করুন, তারপরে Eclipse এর শীর্ষে "রান" মেনুতে ক্লিক করুন এবং নিম্নলিখিতটিতে ক্লিক করুন:

  1. চালান
  2. কনফিগারেশন চালান
  3. ক্লাসপাথ (ট্যাব)
  4. ব্যবহারকারীর এন্ট্রি
  5. উন্নত (ডানদিকে বোতাম)
  6. ফোল্ডার যুক্ত করুন
  7. তারপরে আপনার লগ 4j.properties ফাইল রয়েছে এমন ফোল্ডারে নেভিগেট করুন
  8. প্রয়োগ করা
  9. চালান

ত্রুটি বার্তা আর প্রদর্শিত হবে না।


সতর্কতা বার্তা এখন দেখা যাচ্ছে না তবে এখনও লগগুলি কাঙ্ক্ষিত স্থানে লেখা নেই
অর্পণ সায়নী

48

দ্রুত সমাধান:

  1. মূল ফাংশনে কোড যুক্ত করুন :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
    
  2. / পাথ / টুতে log4j.properties নামে একটি ফাইল তৈরি করুন

    log4j.rootLogger=INFO, stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
    

Log4j.properties ফাইলটি এসসিআর / পরীক্ষা / সংস্থার মতো রিসোর্স ডিরেক্টরিতে রাখুন
অলোক

Log4j.properties পাথের সুস্পষ্ট ঘোষণা এড়াতে; এটিকে আপনার প্রকল্পের ফোল্ডারের মধ্যে রাখুন এবং এটিকে স্ট্রিং লগ 4jConfPath = System.getProperty ("user.dir") + ফাইল.সাপারেটর + "লগ 4 জে.প্রপ্রেটিস" এর মতো অ্যাক্সেস করুন;
আমিমো বেনজা

36

এটি কেবল একটি সতর্কতা।

স্থাপন করা

এই ঘটে যখন ডিফল্ট কনফিগারেশন ফাইল log4j.propertiesএবং log4j.xmlপাওয়া যাবে না এবং আবেদন সঞ্চালিত কোন স্পষ্ট কনফিগারেশন।

এটি ঠিক করার জন্য, কেবল তৈরি / কপি log4j.propertiesবা log4j.xmlআপনার একটি অবস্থান মধ্যে ক্লাসপাথ (সাধারণত বয়াম ফাইল হিসাবে একই)।

বৈকল্পিকভাবে সেট জাভা বিকল্প: -Dlog4j.configuration=file:///path/to/log4j.properties

log4jThread.getContextClassLoader().getResource()ডিফল্ট কনফিগারেশন ফাইলগুলি সনাক্ত করতে ব্যবহার করে এবং সরাসরি ফাইল সিস্টেমটি পরীক্ষা করে না। যথাযথ অবস্থান স্থাপনের জন্য জানা log4j.propertiesবা log4j.xmlব্যবহারের জন্য শ্রেণি লোডার অনুসন্ধান কৌশল বোঝার প্রয়োজন। log4jকনসোল বা ফাইল সিস্টেমের আউটপুট কিছু পরিবেশে নিষিদ্ধ হতে পারে বলে একটি ডিফল্ট কনফিগারেশন সরবরাহ করে না।

ডিবাগ

ডিবাগিংয়ের জন্য, আপনি -Dlog4j.debug=trueপ্যারামিটার ব্যবহার করার চেষ্টা করতে পারেন ।

এর কনফিগারেশন log4j.properties

এর নমুনা কনফিগারেশন log4j.properties:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

এখানে আরও একটি কনফিগারেশন ফাইল যা একাধিক সংযোজনকারী ব্যবহার করে:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

আপাচে সোলার

ব্যবহার যদি Solr , কপি <solr>/example/resources/log4j.propertiesটি স্থানের মধ্যে ক্লাসপাথ

log4j.propertiesসোলার থেকে নমুনা কনফিগারেশন এর মতো হয়:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

আরো দেখুন:


13

এখানে বেশিরভাগ উত্তরে পরামর্শ দেওয়া হয়েছিল যে log4j.propertiesফাইলটি সঠিক স্থানে স্থাপন করা উচিত (খাঁটি প্রকল্পের জন্য, এটিতে অবস্থিত হওয়া উচিত src/main/resources)

তবে আমার জন্য সমস্যাটি হ'ল আমার log4j.propertiesসঠিকভাবে কনফিগার করা হয়নি। এখানে একটি নমুনা যা আমার পক্ষে কাজ করে, আপনি প্রথমে এটি চেষ্টা করে দেখতে পারেন।

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

1
লোগ 4 জেনাকে "ত্রুটিযুক্ত ফাইল খুঁজে পাবে না" এবং "ফাইলের মধ্যে অসম্পূর্ণ বৈশিষ্ট" একই ত্রুটি হিসাবে বিবেচনা করে এটি একটি সময় নষ্টকারী।
এড নরিস

1
আমার জন্য, এটি সেরা উত্তর। আমি ভোট দিয়েছি এবং আমি আপনার উত্তরে কিছু ব্যাখ্যা যুক্ত করেছি।
স্ক্লেবে

আমার জন্য সেরা উত্তর !!!
নসকিওয়েপনার

8

আগে যেমন ব্যাখ্যা করা হয়েছে সেখানে 2 টি পন্থা রয়েছে

প্রথমটি হ'ল আপনার প্রধান পদ্ধতিতে এই লাইনটি যুক্ত করা:

BasicConfigurator.configure();

দ্বিতীয় পন্থাটি আপনার শ্রেণিপথে এই স্ট্যান্ডার্ড লগ 4j.properties ফাইল যুক্ত করুন:

দ্বিতীয় পন্থা নেওয়ার সময় আপনার অবশ্যই নিশ্চিত হওয়া দরকার যে আপনি ফাইলটি যথাযথভাবে আরম্ভ করেছেন, যেমন।

Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");

লগ ফাইলগুলি সঞ্চয় করার জন্য আপনি প্রয়োজনীয় ফোল্ডার তৈরি করেছেন তা নিশ্চিত করুন।


আমার একই সমস্যা ছিল এবং আমি বেসিক কনফিগুয়েটার.কনফিগার () ব্যবহার করি; প্রধান পদ্ধতিতে এবং এখন কোডটি সঠিকভাবে কার্যকর হচ্ছে।
সুরভী পান্ডে

7

আপনি Loggerএকটি বার্তা লগ করতে আপনার কোড ইন ব্যবহার করুন । Appenderএকটি অবজেক্টকে একটি সংযোজন করা হয় Loggerএকটি নির্দিষ্ট লক্ষ্য বার্তা লিখতে। আছে FileAppenderপাঠ্য-ফাইল বা লিখতে ConsoleAppenderকনসোলে লিখতে। আরও সহায়তার জন্য আপনাকে আপনার লগার এবং অ্যাপেন্ডার সেটআপের কোডটি দেখাতে হবে।

লগার এবং অ্যাপেন্ডারের ইন্টারঅ্যাকশন সম্পর্কে আরও ভাল বোঝার জন্য দয়া করে টিউটোরিয়ালটি পড়ুন ।


6

সম্পত্তি ফাইল সঠিকভাবে সেট করা আছে তা নিশ্চিত করুন। এবং আবারও, দেখে মনে হয় যে সংকলকটি বৈশিষ্ট্যগুলির ফাইলটি খুঁজে পাবে না, আপনি পম এ অনুসরণ হিসাবে সেট করতে পারেন (কেবলমাত্র যখন আপনি ম্যাভেন প্রকল্প ব্যবহার করেন)।

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >

এই! আমি একটি উত্তর পেতে ঘন্টা সময় ব্যয়। আমার কেস কোড লিনাক্সে ভাল কাজ করে তবে উইন্ডোতে এই ত্রুটি রয়েছে (একই এনবি আইডিই) এবং উপরের সমস্ত সমাধানগুলি কাজ করে না!
Tiana987642

5

আমি একই ত্রুটি পেয়েছি। এই সমস্যাটি যা এই ত্রুটি বার্তার দিকে নিয়ে যায়:

লগ 4 জে কনফিগার করার আগে আমি কিছু অবজেক্ট তৈরি করি যা লগার ব্যবহার করে:

Logger.getLogger(Lang.class.getName()).debug("Loading language: " + filename);

সমাধান: লগ 4 জে মূল পদ্ধতির শুরুতে কনফিগার করুন:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file

তোমাকে অনেক ধন্যবাদ!!! প্রত্যেকেই কেবল বসন্ত বা টমক্যাট ধরে নিচ্ছেন বা কনফিগারেশনটি আরম্ভ করার জন্য যা কিছু আছে।
উইন্ডগজার

3

আমি মনে করি আপনার বুঝতে হবে কোথায় লগ 4 জার ফাইল বা জাভা কোড লগ 4j কনফিগারেশন ফাইলগুলির সন্ধান করে।

src/main/resources/log4j.propertiesহয় গ্রহনের পথ। এগুলিকে একটি যথাযথ স্থানে রাখুন যাতে আপনার কোডের ক্ষেত্রে নিখুঁত পথটি হার্ড কোড করতে না হয়।

আমার প্রবন্ধে এবং যে জন্য নমুনা সমাধান পড়ুন http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/


3

এটি হওয়ার আর একটি কারণ (আরসিপি 4) হ'ল আপনি নিজের টার্গেট ফাইলে একাধিক লগিং ফ্রেমওয়ার্ক ব্যবহার করছেন। উদাহরণস্বরূপ, আপনি যদি নিজের টার্গেট ফাইল সামগ্রী ট্যাবে slf4j, log4j এবং ch.qos.logback.slf4j এর সংমিশ্রণ ব্যবহার করেন তবে এটি ঘটবে।


3

প্রথম কোড হিসাবে নিম্নলিখিতটি যুক্ত করুন:

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);

2

আমার ক্ষেত্রে, ত্রুটি ফ্ল্যাগ "ছিল additivity "। যদি এটি আপনার জন্য প্রকল্পের প্যাকেজটি মূল "মিথ্যা" হয় তবে চাইল্ড প্যাকেজগুলির কোনও অ্যাপেন্ডার থাকবে না এবং আপনি " অ্যাপেন্ডার খুঁজে পেল না " ত্রুটি দেখতে পাবেন।


2

আমি যখন ইউনাইট পরীক্ষা ক্লাস চালানোর চেষ্টা করছিলাম তখন আমি একই সমস্যার মুখোমুখি হয়েছিলাম।

Src / টেস্ট / রিসোর্স ফোল্ডারে আমি ম্যানুয়ালি log4j.properties ফাইল যুক্ত করার পরে সমস্যার সমাধান হয়ে গেছে।

লগ 4j.properties ফাইলটিতে নীচের কোডটি যুক্ত করা সমস্যার সমাধান করেছে:

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

1

ইন্টেলিজ ১২-এ মাভেনের সাথে এক্সিকিউটেবল জার তৈরি করার চেষ্টা করার সময় আমি এই ইস্যুটিতে দৌড়েছি It জার ফাইলটি কার্যকর করা হয়েছিল))

এফওয়াইআই আমি লগারটি এ জাতীয়ভাবে পাচ্ছিলাম:

Logger log = LogManager.getLogger(MyClassIWantedToLogFrom.class);

এবং আমি এটিতে অন্তর্ভুক্ত একটি পম ফাইলের সাথে কাজ করতে সক্ষম হয়েছি:

         <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-5</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath> 
                        <mainClass>com.mycompany.mainPackage.mainClass</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.</Class-Path> <!-- need to add current directory to classpath properties files can be found -->
                    </manifestEntries>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

1

আপনার প্রকল্পটি Eclipse এ খোলা আছে তা নিশ্চিত করুন, তারপরে Eclipse এর শীর্ষে "রান" মেনুতে ক্লিক করুন এবং নিম্নলিখিতটিতে ক্লিক করুন:

  1. চালান

  2. কনফিগারেশন চালান

  3. ক্লাসপাথ (ট্যাব)

  4. ব্যবহারকারীর এন্ট্রি

  5. ডানদিকে জার যোগ করুন

  6. log4j জার ফাইল যুক্ত করুন

  7. প্রয়োগ করা

  8. চালান

ত্রুটি বার্তা আর প্রদর্শিত হবে না।


1

কারও কারও মধ্যে শব্দটির অভাব হতে পারে static:

final static Logger logging = Logger.getLogger(ProcessorTest.class);

যদি আমি লগারটিকে ইনসাল্টেন্স ফিল্ড তৈরি করি তবে আমি ঠিক এটি খুব সতর্কতা পাচ্ছি

No appenders could be found for logger (org.apache.kafka.producer.Sender)

সবচেয়ে খারাপটি হ'ল, সতর্কবাণীটি ProcessorTestভুলটি কোথায় থাকে তা নির্দেশ করে না , তবে সমস্যার উত্স হিসাবে একেবারে পৃথক শ্রেণীর (প্রেরককে) বোঝায় । এই শ্রেণীর সঠিক সেট লগার রয়েছে এবং কোনও পরিবর্তন দরকার নেই! আমরা যুগে যুগে সমস্যাটি দেখতে পারি!


1

লগ 4j2 ব্যবহার করার সময় আমি একই সমস্যার মুখোমুখি হয়েছিলাম। আমার সমস্যা ভুল নির্ভর লাইব্রেরি ব্যবহার করে:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <scope>runtime</scope>
    </dependency>

পরিবর্তে, আমার ব্যবহার করা উচিত:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>runtime</scope>
    </dependency>

আমার ক্ষেত্রে আমার লগ 4j2.xML আমার "সংস্থানগুলি" ডিরেক্টরিতে সংজ্ঞায়িত হয়েছে এবং এটি ব্যবহারের জন্য নির্দিষ্ট করেছেন:

System.setProperty("log4j.configurationFile", "log4j2.xml");

1

লগ 4 জে এই সতর্কতা বার্তাটি প্রদর্শন করুন যখন লোগ 4 জ্যা জাভা কোডটি আপনার প্রোগ্রামে প্রথম লগ লাইন তৈরি করতে সন্ধান করছে।

এই মুহুর্তে, লগ 4 জ 2 টি জিনিস তৈরি করে

  1. এটি log4j.propertiesফাইল সন্ধান করতে
  2. এটি অ্যাপেন্ডারকে সংজ্ঞায়িত করে তাত্ক্ষণিকভাবে অনুসন্ধান করে log4j.properties

যদি ফাইল log4Jখুঁজে না পাওয়া যায় log4j.propertiesবা অ্যাপ্লেন্ডার হিসাবে ঘোষিত হয় তবে ফাইলটিতে log4j.rootloggerঅন্য কোথাও সংজ্ঞায়িত করা হয়নি log4j.properties, সতর্কতা বার্তা প্রদর্শিত হবে।

সতর্কতা: প্রপার্টি ফাইলের বিষয়বস্তু অবশ্যই সঠিক হতে হবে।

নিম্নলিখিত সামগ্রী সঠিক নয়

log4j.rootLogger=file

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

কারণ fileঅ্যাপেন্ডরটি log4j.rootloggerবিবৃতিতে লোয়ার -সিএসএতে ঘোষিত হয় এবং লগ 4j.appender বিবৃতিতে UPPER-CASE ব্যবহার করে সংজ্ঞায়িত হয়!

একটি সঠিক ফাইল হবে

log4j.rootLogger=FILE

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

যদি MAVEN ব্যবহার করা হয়, আপনাকে অবশ্যই log4j.properties ফাইলগুলিতে লাগাতে হবে src/main/resourcesএবং একটি MAVEN বিল্ড শুরু করতে হবে ।

লগ 4j.properties ফাইলটি target/classesফোল্ডারে অনুলিপি করা হয় ।

লগ 4 জে log4j.propertiesএতে পাওয়া ফাইলটি ব্যবহার করুন target/classes!


1

আমারও এই সমস্যা ছিল আমি কেবল ইন্টেলিজ আইডিইএর মধ্যে সংস্থানসমূহের ডিরেক্টরি চিহ্নিত করতে ভুলে গেছি

  1. আপনার ডিরেক্টরিতে রাইট ক্লিক করুন
  2. ডিরেক্টরি হিসাবে চিহ্নিত করুন
  3. সংস্থান মূল

1

আপনি যদি Eclipse ব্যবহার করছেন এবং সবকিছু আগে থেকেই ঠিকঠাক কাজ করার পরে এই সমস্যাটি কোথাও থেকে প্রকাশিত হয়েছে, যাবার চেষ্টা করুন Project - Clean - Clean


0

ফাইলটি অবস্থিত থাকা সত্ত্বেও, Eclipse থেকে JUnit পরীক্ষা log4j.propertiesচলাকালীন আমার Eclipse ইনস্টলেশনটি খুঁজে পেল না src/test/resources

কারণটি ছিল যে Eclipse (বা m2e সংযোজক) src/test/resourcesপ্রত্যাশিত আউটপুট ফোল্ডারে সামগ্রী অনুলিপি করেনি target/test-classes- এর মূল কারণটি ছিল জাভা বিল্ড পাথ -> উত্স ট্যাব -> বিল্ড পাথে উত্স ফোল্ডার -> src / পরীক্ষা / সংস্থানসমূহ , কোনওভাবে সেখানে Excluded: **প্রবেশ ছিল । আমি বাদ দেওয়া এন্ট্রি সরিয়েছি ।

বিকল্পভাবে, আমি ম্যানুয়ালি অনুলিপি src/test/resources/log4j.propertiesকরতে পারে target/test-classes/log4j.properties


0

যদি log4j.propertiesসত্যই ক্লাসপথে থাকে, আপনি অ্যাপ্লিকেশন সার্ভারে স্থাপনার জন্য ওয়ার ফাইলটি তৈরি করতে স্প্রিং বুট ব্যবহার করছেন, আপনি web.xmlস্প্রিং বুটের অটোকনফিগারের পক্ষে কোনও ফাইল বাদ দিচ্ছেন , এবং আপনি যে কোনও লগ বার্তা পাচ্ছেন না, আপনাকে স্পষ্টতই প্রয়োজন Log4j কনফিগার করুন। ধরে নিই যে আপনি লগ 4 জে 1.2.x ব্যবহার করছেন:

public class AppConfig extends SpringBootServletInitializer {

    public static void main( String[] args ) {
        // Launch the application
        ConfigurableApplicationContext context = SpringApplication.run( AppConfig.class, args );
    }

    @Override
    protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
        InputStream log4j = this.getClass().getClassLoader().getResourceAsStream("log4j.properties");
        PropertyConfigurator.configure(log4j);
        return application;
    }

// Other beans as required...
}

0

সম্ভবত যোগ প্রকল্পে জাভা বিল্ড পাথটিতে লগ 4 জজ রয়েছে যুক্ত করুন, আমি যখন গ্রহণা ব্যবহার করে কোনও মাহাউট প্রকল্পে এই সমস্যাটি পেলাম তখন আমি এতে মহাআউট_এইচ 2o যুক্ত করব!


0

আপনি যদি অনেকগুলি প্রকল্পের সাথে একসাথে কাজ করেন তবে আপনার স্টাইলের সমস্যার মুখোমুখি হতে পারে।

* আপনার কাছে একটি lof4j.properties ফাইল থাকতে হবে এবং এই ফাইলটিতে অন্য প্রকল্পের লগ বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে।

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


0

প্রথম আমদানি:

 import org.apache.log4j.PropertyConfigurator;

তারপরে মূল পদ্ধতির কোড নীচে যুক্ত করুন:

String log4jConfPath ="path to/log4j.properties";
PropertyConfigurator.configure(log4jConfPath);

পথে একটি ফাইল তৈরি করুন এবং সেই ফাইলটিতে নীচের কোডটি যুক্ত করুন।

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

0

এই সাইটের সমাধানটি আমার জন্য কাজ করেছে https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ । আমি এখন log4j থেকে কোনও সতর্কতা দেখছি না

আমি এটি একটি লগ 4j.properties ফাইলের মধ্যে রেখেছি যা আমি src / প্রধান / সংস্থানগুলিতে রেখেছি

# This sets the global logging level and specifies the appenders
log4j.rootLogger=INFO, theConsoleAppender

# settings for the console appender
log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.theConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

0

প্রথমত: একটি লগ 4j.properties ফাইল তৈরি করুন

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

এটি এসআরসি / প্রধান / সংস্থানসমূহ / এ রাখুন

এর পরে, এই 2 নির্ভরতা ব্যবহার করুন:

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>

এই চূড়ান্ত নির্ভরতা পিওএম ফাইলে যুক্ত করা প্রয়োজন:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>

0

লগ 4j জেভিএম যুক্তি Dlog4j.configration বিবেচনা করুন

সাধারণভাবে:

J4M যুক্তি যুক্ত করুন যা লগ 4j কনফিগারেশন ফাইলটি নির্দেশ করে। বাক্য গঠনটি ঠিক নীচের মতো:

java [ options ] -jar file.jar [ arguments ]

বাস্তব কমান্ড লাইনের একটি নমুনা ঠিক নীচের মত:

java -Dlog4j.configuration=conf/log4j.xml -jar myJarFile.jar myArg1 myArg2

ইন্টেলিজ আইডিই ব্যবহারকারীদের জন্য:

1.Run/Debug Configurations
2.Edit configurations...
3.VM options
4.Enter the same value also starting with "-D"

পরামর্শ:

1.গ্রাহ্য আইডিই ব্যবহারকারীরা সমতুল্য পদ্ধতির সন্ধান পাবেন

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

3. আপনার কাজের ডিরেক্টরি, আপেক্ষিক পাথ এবং ক্লাসপাথের প্রতি মনোযোগ দিন।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.