मैंने को केवल OnStartupTriggeringPolicy
सेट के साथ कॉन्फ़िगर किया है, लेकिन जब मैंने DefaultRolloverStrategy
की अधिकतम विशेषता को कुछ नंबर पर सेट किया है, तो लॉग उस राशि को अनिश्चित काल तक उत्पन्न करते रहेंगे।Log4j2 DefaultRolloverStrategy की अधिकतम विशेषता वास्तव में कैसे काम करती है?
<?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>
<RollingRandomAccessFile
name="RollingRAF"
fileName="logs/app.log"
filePattern="logs/app-%d{[email protected]}.log">
<PatternLayout>
<Pattern>%d %p %c{1.} %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="myLogger" level="warn">
<AppenderRef ref="RollingRAF"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
यह क्योंकि मैं अपने नाम पैटर्न में पुनरावर्तक की जरूरत नहीं है है:
यहाँ मेरी log4j2.xml है?
क्या ऐसा इसलिए है क्योंकि मेरी फ़ाइल का नाम सटीक सेकंड पर सेट है?
क्या ऐसा इसलिए है क्योंकि मेरे पास केवल OnStartupTriggeringPolicy
सेट है?
या यहां क्या हो रहा है?
मेरा लक्ष्य यहां एक रोलिंग कॉन्फ़िगरेशन स्थापित करना था जो अंतिम 5 एप्लिकेशन रन लॉग करेगा।
क्या आप नाम पैटर्न में तारीख का उपयोग कर रहे हैं, तो आप ' 'का उपयोग करना चाहिए? –
Sionnach733
@ Sionnach733 जोड़ना/बदलना जो ज्यादा नहीं बदलता है, यह अनिश्चित काल तक लॉग उत्पन्न करता रहता है। अगर मैं एक इटरेटर% जोड़ता हूं और सटीकता को उस बिंदु पर कम करता हूं जहां मैं एक ही परिशुद्धता के साथ 5 लॉग उत्पन्न करने में सक्षम हूं, तो यह पुराने लॉग को अपेक्षित रूप से ओवरराइट करता है (उदाहरण के लिए यदि परिशुद्धता मिनटों पर सेट हो और मैं 1 मिनट में 5 लॉग उत्पन्न करता हूं) , लेकिन जैसे ही तिथि बदलती है (अगले मिनट आता है) यह 5 और लॉग उत्पन्न करने की अनुमति देगा। आदर्श रूप से मैं बस सुविधा के लिए फ़ाइल नाम की तारीख चाहता था कार्यक्षमता नहीं, क्योंकि मैं सिर्फ नाम से तारीख को छोड़ सकता हूं और जो चाहता हूं उसे प्राप्त करने के लिए एक सादा इटरेटर के साथ जा सकता हूं। –
मैंने वही व्यवहार देखा है और @ छत-गीको से सहमत हूं, डिफ़ॉल्टरॉलरस्ट्रेटी पर अधिकतम विशेषता केवल अनुवांशिक रूप से लागू होती है और इटेटरेटर केवल तब ही पुनरावृत्त होता है जब शेष फ़ाइल नाम दोहराया जाता है, इसलिए यह मेरे लिए ऑटो प्रतीत नहीं होता है नाम अलग होने पर पुराने लॉग फ़ाइलों को हटा दें। फिर भी, यह वास्तव में अजीब बात है कि यह कार्यक्षमता मौजूद नहीं है जब एपीआई इतने बड़े पैमाने पर इतने बड़े लोगों के लिए उपयोग किया जाता है ... –