জাভাতে লগ 4 জে আউটপুট অক্ষম করা হচ্ছে


উত্তর:


123

স্তরে অফ অফ করুন (ডিবিগির পরিবর্তে, আইএনএফও, ....)


79

আপনি যদি প্রোগ্রামগতভাবে লগিং বন্ধ করতে চান তবে ব্যবহার করুন

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
    logger.setLevel(Level.OFF);
}

4
তিনি "log4j.properties ফাইল ব্যবহার করে" নির্দিষ্ট করেছেন তবে এটি খুব দরকারী।
জাইমে হাবলুটজেল

4
ধন্যবাদ, আমি যা চেয়েছিলাম ঠিক তাই
হোসে মার্টিনেজ

এবং আপনি কীভাবে পূর্ববর্তী সেটিংসে (প্রোগ্রাম্যাটিকভাবে) লগারগুলি ফিরিয়ে আনবেন?
শচীন শর্মা

কোন জাদু নেই, কেবল সহজ প্রোগ্রামিং। একটি মানচিত্র <লগার, লেভেল> বর্তমান স্তর সঞ্চয় করুন দীর্ঘস্থায়ী প্রেক্ষাপটে এবং তারপর এন্ট্রি সেট কলিং e.getKey উপর iterating দ্বারা প্রত্যাবর্তন () setLevel (e.getValue ())।
অ্যান্ড্রু Gilmartin


14

আপনি স্তরটি অফে অফ করতে পারেন যা সমস্ত লগিং থেকে মুক্তি পাওয়া উচিত। লগ 4 জে ওয়েবসাইট অনুসারে, গুরুত্বের ভিত্তিতে বৈধ স্তরগুলি হ'ল ট্র্যাক, ডিইবিইউজি, ইনফো, সতর্কতা, ত্রুটি F নেই এক অনথিভুক্ত স্তর অফ নামক মারাত্মক চেয়ে একটি উচ্চ স্তরের, এবং সব লগিং বন্ধ হয়ে যাবে।

কিছুই লগ (অতিরিক্ত স্তর) লগ করতে আপনি অতিরিক্ত রুট লগার তৈরি করতে পারেন, যাতে আপনি সহজেই রুট লগারগুলি স্যুইচ করতে পারেন। আপনাকে এটি শুরু করতে এখানে একটি পোস্ট

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


এবং ট্র্যাকের নীচে সমস্ত স্তরের "স্তর" রয়েছে যা এর বিপরীত। দ্বিতীয়ত, প্রোগ্রামটি যদি "যদি (logger.isDebugEn सक्षम ()) logger.debug (...)" এর মতো কিছু করে তোলে তবে এটি ত্বরান্বিত হতে পারে
টিম বাথ

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

4

আপনি যা চান তার স্তর পরিবর্তন করুন। (আমি লগ 4 জ 2, সংস্করণ 2.6.2 ব্যবহার করছি)। এটি সহজতম উপায়, পরিবর্তন করুন<Root level="off">

উদাহরণস্বরূপ: ফাইল log4j2.xml
বিকাশের পরিবেশ

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SimpleConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="SimpleConsole"/>
        </Root>
    </Loggers>
</Configuration>

উৎপাদন পরিবেশ

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SimpleConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="off">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
    <Loggers>
        <Root level="off">
            <AppenderRef ref="SimpleConsole"/>
        </Root>
    </Loggers>
</Configuration>

4

এছাড়াও, প্রোগ্রামগতভাবে লগিং বন্ধ করাও সম্ভব:

Logger.getRootLogger().setLevel(Level.OFF);

বা

Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());

এই ব্যবহার আমদানি:

import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;

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