मैं सांत्वना और log4j2 का उपयोग कर एक फ़ाइल परिशिष्ट के साथ एक बहुत ही सरल XML विन्यास फाइल चाहता हूँ।
(अपाचे वेबसाइट मुझे बहुत जानकारी के साथ मार रहा है।)
मैं सांत्वना और log4j2 का उपयोग कर एक फ़ाइल परिशिष्ट के साथ एक बहुत ही सरल XML विन्यास फाइल चाहता हूँ।
(अपाचे वेबसाइट मुझे बहुत जानकारी के साथ मार रहा है।)
जवाबों:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="MyFile" fileName="all.log" immediateFlush="false" append="false">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
टिप्पणियाँ:
Logger logger = LogManager.getLogger();
अपने लकड़हारे को आरंभ करने के लिए उपयोग करेंयहाँ मेरा सरलीकरण है log4j2.xml
जो एक दैनिक रोलिंग फ़ाइल को सांत्वना और लिखने के लिए प्रिंट करता है:
// java
private static final Logger LOGGER = LogManager.getLogger(MyClass.class);
// log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="logPath">target/cucumber-logs</Property>
<Property name="rollingFileName">cucumber</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%highlight{%-5level}] %d{DEFAULT} %c{1}.%M() - %msg%n%throwable{short.lineNumber}" />
</Console>
<RollingFile name="rollingFile" fileName="${logPath}/${rollingFileName}.log" filePattern="${logPath}/${rollingFileName}_%d{yyyy-MM-dd}.log">
<PatternLayout pattern="[%highlight{%-5level}] %d{DEFAULT} %c{1}.%M() - %msg%n%throwable{short.lineNumber}" />
<Policies>
<!-- Causes a rollover if the log file is older than the current JVM's start time -->
<OnStartupTriggeringPolicy />
<!-- Causes a rollover once the date/time pattern no longer applies to the active file -->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="DEBUG" additivity="false">
<AppenderRef ref="console" />
<AppenderRef ref="rollingFile" />
</Root>
</Loggers>
</Configuration>
TimeBasedTriggeringPolicy
अंतराल (पूर्णांक) - तिथि पैटर्न में सबसे विशिष्ट समय इकाई के आधार पर एक रोलओवर कितनी बार होना चाहिए। उदाहरण के लिए, सबसे विशिष्ट वस्तु के रूप में घंटों के साथ तारीख पैटर्न के साथ और 4 रोलओवर की वृद्धि हर 4 घंटे में होगी। डीफॉल्ट मूल्य 1 है।
modulate (बूलियन) - इंगित करता है कि अंतराल को समायोजित किया जाना चाहिए ताकि अगले रोलओवर अंतराल सीमा पर घटित हो। उदाहरण के लिए, यदि आइटम घंटे है, तो वर्तमान समय 3 बजे है और अंतराल 4 है तो पहला रोलओवर सुबह 4 बजे होगा और फिर अगले दिन 8 बजे, दोपहर, 4 बजे, आदि होंगे।
स्रोत: https://log.apache.org/log4j/2.x/manual/appenders.html
आउटपुट:
[INFO ] 2018-07-21 12:03:47,412 ScenarioHook.beforeScenario() - Browser=CHROME32_NOHEAD
[INFO ] 2018-07-21 12:03:48,623 ScenarioHook.beforeScenario() - Screen Resolution (WxH)=1366x768
[DEBUG] 2018-07-21 12:03:52,125 HomePageNavigationSteps.I_Am_At_The_Home_Page() - Base URL=http://simplydo.com/projector/
[DEBUG] 2018-07-21 12:03:52,700 NetIncomeProjectorSteps.I_Enter_My_Start_Balance() - Start Balance=348000
पिछले दिन स्वचालित रूप से नया नाम बनाने के लिए एक नई लॉग फ़ाइल बनाई जाएगी:
cucumber_yyyy-MM-dd.log
मावेन परियोजना में, आप याlog4j2.xml
में डाल देंगे ।src/main/resources
src/test/resources
log4j2 में एक बहुत ही लचीली विन्यास प्रणाली है (जो IMHO एक मदद से अधिक व्याकुलता है), आप JSON का उपयोग भी कर सकते हैं। संदर्भ के लिए https://log.apache.org/log4j/2.x/manual/configuration.html देखें ।
व्यक्तिगत रूप से, मैंने अभी हाल ही में log4j2 का उपयोग करना शुरू किया था, लेकिन मैं "सख्त XML" कॉन्फ़िगरेशन (जो कि तत्व नामों के बजाय विशेषताओं का उपयोग कर रहा हूं) की ओर रुझान कर रहा हूं, जिसे स्कीमा-मान्य किया जा सकता है।
यहाँ मेरा सरल उदाहरण है ऑटोकॉन्फ़िगरेशन और सख्त मोड का उपयोग करके, फ़ाइल नाम सेट करने के लिए "संपत्ति" का उपयोग करना:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorinterval="30" status="info" strict="true">
<Properties>
<Property name="filename">log/CelsiusConverter.log</Property>
</Properties>
<Appenders>
<Appender type="Console" name="Console">
<Layout type="PatternLayout" pattern="%d %p [%t] %m%n" />
</Appender>
<Appender type="Console" name="FLOW">
<Layout type="PatternLayout" pattern="%C{1}.%M %m %ex%n" />
</Appender>
<Appender type="File" name="File" fileName="${filename}">
<Layout type="PatternLayout" pattern="%d %p %C{1.} [%t] %m%n" />
</Appender>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="File" />
<AppenderRef ref="Console" />
<!-- Use FLOW to trace down exact method sending the msg -->
<!-- <AppenderRef ref="FLOW" /> -->
</Root>
</Loggers>
</Configuration>
File
नीति है? अधिकतम फ़ाइल आकार क्या है? और यह फाइल करने के लिए कैसे लिखता है? (फ़ाइल में हमेशा लॉग के अंतिम 10 ग्राम होते हैं?)