আমি লগ 4j2 ব্যবহার করে একটি কনসোল এবং একটি ফাইল অ্যাপেন্ডার সহ একটি খুব সাধারণ এক্সএমএল কনফিগারেশন ফাইল চাই।
(অ্যাপাচি ওয়েবসাইট আমাকে অনেক তথ্য দিয়ে হত্যা করছে))
আমি লগ 4j2 ব্যবহার করে একটি কনসোল এবং একটি ফাইল অ্যাপেন্ডার সহ একটি খুব সাধারণ এক্সএমএল কনফিগারেশন ফাইল চাই।
(অ্যাপাচি ওয়েবসাইট আমাকে অনেক তথ্য দিয়ে হত্যা করছে))
উত্তর:
<?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।
মডুলেট (বুলিয়ান) - অন্তর অন্তর সামঞ্জস্য করা উচিত কিনা তা নির্দেশ করে পরবর্তী রোলওভার অন্তর সীমানায় দেখা দেয়। উদাহরণস্বরূপ, যদি আইটেমটি ঘন্টা হয়, বর্তমান ঘন্টা সকাল 3 টা এবং অন্তর 4 হয় তবে প্রথম রোলওভারটি সকাল 4 টা থেকে শুরু হবে এবং তারপরে পরবর্তীগুলি সকাল 8 টা, দুপুর, 4 টা, ইত্যাদি সময়ে ঘটবে etc.
সূত্র: https://logging.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
।
লগ 4 জ 2 এর একটি খুব নমনীয় কনফিগারেশন সিস্টেম রয়েছে (যা আইএমএইচও সাহায্যের চেয়ে আরও বেশি বিচ্যুতি), আপনি জেএসএনও ব্যবহার করতে পারেন। একটি রেফারেন্সের জন্য https://logging.apache.org/log4j/2.x/manual/configration.html দেখুন ।
ব্যক্তিগতভাবে, আমি সম্প্রতি লগ 4 জ 2 ব্যবহার করা শুরু করেছি, তবে আমি "কঠোর এক্সএমএল" কনফিগারেশনের দিকে ঝুঁকছি (যা উপাদানগুলির নামের পরিবর্তে বৈশিষ্ট্যগুলি ব্যবহার করছি), যা স্কিমা-যাচাইযোগ্য হতে পারে।
ফাইল নাম নির্ধারণের জন্য "সম্পত্তি" ব্যবহার করে অটোকনফিগারেশন এবং কঠোর মোড ব্যবহার করে আমার সহজ উদাহরণ এখানে দেওয়া হয়েছে:
<?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
এখানে নীতি কী ? সর্বোচ্চ ফাইলের আকার কত? এবং কিভাবে এটি ফাইল করতে লিখতে? (ফাইলটিতে সর্বদা লগ 10MB থাকে?)