लॉग4जे

Apache Log4j एक Java (सॉफ़्टवेयर प्लेटफ़ॉर्म)-आधारित लॉगिंग (सॉफ़्टवेयर) उपयोगिता है जिसे मूल रूप से Ceki Gülcü द्वारा लिखा गया है। यह अपाचे लॉगिंग सेवाएं ेज का हिस्सा है, जो अपाचे सॉफ्टवेयर फाउंडेशन की एक परियोजना है। Log4j कई जावा लॉगिंग फ्रेमवर्क में से एक है।

Gülcü ने तब से SLF4J, Reload4j, बनाया है। और लॉगबैक जो Log4j के विकल्प हैं। Apache Log4j टीम ने Log4j 2 विकसित किया Log4j 1.2, 1.3 की समस्याओं के जवाब में,  और लॉगबैक, उन मुद्दों को संबोधित करते हुए जो उन रूपरेखाओं में प्रकट हुए। इसके अलावा, Log4j 2 ने एक प्लगइन आर्किटेक्चर पेश किया जो इसे अपने पूर्ववर्ती की तुलना में अधिक विस्तार योग्य बनाता है। Log4j 2 1.x संस्करणों के साथ पीछे संगत नहीं है, हालांकि एक एडेप्टर उपलब्ध है। 5 अगस्त 2015 को, अपाचे लॉगिंग सर्विसेज प्रोजेक्ट मैनेजमेंट कमेटी ने घोषणा की कि लॉग 4 जे 1 जीवन के अंत तक पहुंच गया था और लॉग 4 जे 1 के उपयोगकर्ताओं को अपाचे लॉग 4 जे 2 में अपग्रेड करने की सलाह दी गई थी। 12 जनवरी, 2022 को, Ceki Gülcü द्वारा Reload4j संस्करण 1.2.18.0 के रूप में एक कांटा और नया नाम दिया गया log4j संस्करण 1.2 जारी किया गया था, जिसका उद्देश्य log4j 1.2.17 में सबसे जरूरी मुद्दों को ठीक करना था जो 2013 में इसकी रिलीज के बाद से जमा हो गए थे। 9 दिसंबर, 2021 को, एक शून्य-दिन (कंप्यूटिंग) | शून्य-दिन की भेद्यता जिसमें Log4j 2 में मनमाना कोड निष्पादन शामिल है, को अलीबाबा क्लाउड सिक्योरिटी टीम द्वारा प्रकाशित किया गया था और विवरणक Log4Shell दिया गया था। इसे Tenable, Inc. द्वारा पिछले दशक की सबसे बड़ी, सबसे महत्वपूर्ण भेद्यता के रूप में चित्रित किया गया है।

अपाचे लॉग 4 जे 2
Apache Log4j 2, Log4j 1 का उत्तराधिकारी है जिसे जुलाई 2014 में सॉफ़्टवेयर रिलीज़ जीवन चक्र #सामान्य उपलब्धता .28GA.29 के रूप में जारी किया गया था। फ्रेमवर्क को स्क्रैच से फिर से लिखा गया था और यह मौजूदा लॉगिंग समाधानों से प्रेरित है, जिसमें Log4j 1 और java.util शामिल हैं। .लॉगिंग। मुख्य अंतर Log4j 1 से हैं:
 * बेहतर विश्वसनीयता। Log4j 1 या Logback जैसे ढांचे को पुन: कॉन्फ़िगर करते समय संदेश गुम नहीं होते हैं
 * एक्स्टेंसिबिलिटी: उपयोगकर्ताओं को कस्टम घटकों को परिभाषित और कॉन्फ़िगर करने देने के लिए Log4j 2 एक प्लगइन सिस्टम का समर्थन करता है
 * सरलीकृत कॉन्फ़िगरेशन सिंटैक्स
 * एक्सएमएल, जेसन, यमल और गुण विन्यास के लिए समर्थन
 * बेहतर फिल्टर
 * कॉन्फ़िगरेशन फ़ाइल, सिस्टम गुण, पर्यावरण चर, थ्रेडकॉन्टेक्स्ट मानचित्र और घटना में मौजूद डेटा में परिभाषित मूल्यों के लिए संपत्ति लुकअप समर्थन
 * एकाधिक एपीआई के लिए समर्थन: लॉग4जे 2 का उपयोग लॉग4जे 2, लॉग4जे 1.2, एसएलएफ4जे, कॉमन्स लॉगिंग और जावा.यूटिल.लॉगिंग (जेयूएल) एपीआई का उपयोग करने वाले अनुप्रयोगों के साथ किया जा सकता है।
 * कस्टम लॉग स्तर
 * आलसी लॉगिंग के लिए जावा 8-शैली लैम्ब्डा समर्थन
 * मार्कर
 * उपयोगकर्ता परिभाषित संदेश वस्तुओं के लिए समर्थन
 * सामान्य विन्यास में कचरा मुक्त या कम कचरा
 * बेहतर गति
 * लिनक्स के लिए बेहतर समर्थन

Log4j 2 की सबसे अधिक पहचानी जाने वाली विशेषताओं में से एक एसिंक्रोनस लॉगर्स का प्रदर्शन है। Log4j 2 विघ्नकर्ता (सॉफ्टवेयर)  का उपयोग करता है। पुस्तकालय कर्नेल लॉकिंग की आवश्यकता को कम करता है और लॉगिंग प्रदर्शन को 12 गुना बढ़ा देता है। उदाहरण के लिए, उसी वातावरण में Log4j 2 प्रति सेकंड 18,000,000 से अधिक संदेश लिख सकता है, जबकि अन्य फ्रेमवर्क जैसे Logback और Log4j 1 केवल <2,000,000 संदेश लिखते हैं प्रति सेकंड।

Log4j लॉग स्तर
निम्न तालिका गंभीरता के घटते क्रम में Log4j में अंतर्निहित लॉग स्तरों और संदेशों को परिभाषित करती है। बायाँ स्तंभ Log4j में लॉग स्तर पदनाम को सूचीबद्ध करता है और दायाँ स्तंभ प्रत्येक लॉग स्तर का संक्षिप्त विवरण प्रदान करता है।

कस्टम लॉग स्तर
Log4j 2 उपयोगकर्ताओं को अपने स्वयं के लॉग स्तरों को परिभाषित करने की अनुमति देता है। लॉगर्स बनाने के लिए एक स्रोत कोड जनरेटर उपकरण प्रदान किया जाता है जो कस्टम लॉग स्तरों को अंतर्निहित लॉग स्तरों के समान समर्थन करता है। कस्टम लॉग स्तर या तो अंतर्निर्मित लॉग स्तरों को पूरक या प्रतिस्थापित कर सकते हैं।

Log4j कॉन्फ़िगरेशन
Log4j को कॉन्फ़िगर किया जा सकता है कॉन्फ़िगरेशन फ़ाइल या जावा कोड के माध्यम से। कॉन्फ़िगरेशन फ़ाइलें XML, JSON, YAML, या .properties प्रारूप में लिखी जा सकती हैं। कॉन्फ़िगरेशन के भीतर, आप तीन मुख्य घटकों को परिभाषित कर सकते हैं: लकड़हारे, परिशिष्ट और लेआउट। फ़ाइल के माध्यम से लॉगिंग को कॉन्फ़िगर करने का लाभ यह है कि लॉग 4j का उपयोग करने वाले एप्लिकेशन को संशोधित किए बिना लॉगिंग को चालू या बंद किया जा सकता है। उदाहरण के लिए, जब तक कोई समस्या न हो, एप्लिकेशन को लॉगिंग ऑफ के साथ चलाने की अनुमति दी जा सकती है, और फिर कॉन्फ़िगरेशन फ़ाइल को संशोधित करके लॉगिंग को वापस चालू किया जा सकता है।

वालों लॉग संदेश गंतव्य नामित हैं। वे नाम हैं जो जावा एप्लिकेशन के लिए जाने जाते हैं। प्रत्येक लकड़हारा स्वतंत्र रूप से कॉन्फ़िगर करने योग्य है कि वह वर्तमान में लॉगिंग के किस स्तर (FATAL, ERROR, आदि) पर लॉग करता है। Log4j के शुरुआती संस्करणों में, इन्हें श्रेणी और प्राथमिकता कहा जाता था, लेकिन अब इन्हें क्रमशः लकड़हारा और स्तर कहा जाता है। एक लकड़हारा कई परिशिष्टों को लॉग संदेश भेज सकता है।

वास्तविक आउटपुट परिशिष्ट द्वारा किया जाता है। वर्णनात्मक नामों के साथ कई परिशिष्ट उपलब्ध हैं, जैसे FileAppender, RollingFileAppender, ConsoleAppender, सॉकेटएपेंडर, SyslogAppender, और SMTPAppender। Log4j 2 ने उन परिशिष्टों को जोड़ा जो Apache Flume, Java Persistence API, Apache Kafka, NoSQL डेटाबेस, मेमोरी-मैप की गई फ़ाइलों, रैंडम एक्सेस फ़ाइलों को लिखते हैं और ज़ीरोएमक्यू एंडपॉइंट्स। एकाधिक परिशिष्ट किसी भी लकड़हारे से जुड़े हो सकते हैं, इसलिए एक ही जानकारी को कई आउटपुट में लॉग करना संभव है; उदाहरण के लिए स्थानीय रूप से एक फ़ाइल और दूसरे कंप्यूटर पर इंटरनेट सॉकेट श्रोता के लिए।

परिशिष्ट लेआउट का उपयोग करते हैं लॉग प्रविष्टियों को प्रारूपित करने के लिए। एक-पंक्ति-पर-एक-समय लॉग फ़ाइलों को प्रारूपित करने का एक लोकप्रिय तरीका पैटर्न लेआउट है, जो एक पैटर्न स्ट्रिंग का उपयोग करता है, जैसे सी (प्रोग्रामिंग भाषा) / सी ++ फ़ंक्शन printf । जब HTML या XML प्रारूप क्रमशः अधिक सुविधाजनक होते हैं, तो उपयोग के लिए HTMLLayout और XMLLayout स्वरूपक भी होते हैं। Log4j 2 ने कोमा से अलग किए गए मानों के लिए लेआउट जोड़े, ग्रेलॉग एक्सटेंडेड लॉग फॉर्मेट (GELF), JSON, YAML और RFC-5424। Log4j 2 में, फ़िल्टर अधिक सुक्ष्म नियंत्रण देने के लिए कॉन्फ़िगरेशन तत्वों पर परिभाषित किया जा सकता है कि कौन से लॉग प्रविष्टियों को संसाधित किया जाना चाहिए जिनके द्वारा लॉगर और परिशिष्ट। संदेश स्ट्रिंग पर लॉग लेवल और रेगुलर एक्सप्रेशन मैचिंग द्वारा फ़िल्टर करने के अलावा, Log4j 2 ने बर्स्ट फ़िल्टर, टाइम फ़िल्टर, अन्य लॉग इवेंट विशेषताओं जैसे मार्कर या थ्रेड कॉन्टेक्स्ट मैप और JSR 223 स्क्रिप्ट फ़िल्टर द्वारा फ़िल्टर किया।

दुर्व्यवहार करने वाले कॉन्फ़िगरेशन को डीबग करने के लिए: यह पता लगाने के लिए कि एक log4j2.xml कॉन्फ़िगरेशन फ़ाइल को निरीक्षण से कहाँ लोड किया गया था.
 * Log4j 2 कॉन्फ़िगरेशन में सेट करें  मानक स्ट्रीम में आंतरिक स्थिति लॉगिंग आउटपुट भेजने के लिए TRACE को विशेषता। कॉन्फ़िगरेशन मिलने से पहले स्थिति लॉगिंग सक्षम करने के लिए, Java VM गुण का उपयोग करें.
 * Log4j 1 में, Java VM गुण का उपयोग करें.

Log4j का एक अंतर्निहित अपुष्ट या डिफ़ॉल्ट कॉन्फ़िगरेशन भी है, जो कि Log4j-इंस्ट्रूमेंटेड Java एप्लिकेशन का है जिसमें किसी भी Log4j कॉन्फ़िगरेशन का अभाव है। यह एक चेतावनी को प्रिंट करता है कि प्रोग्राम अपुष्ट है, और Log4j वेब साइट का URL जहां चेतावनी और कॉन्फ़िगरेशन पर विवरण मिल सकता है। इस चेतावनी को प्रिंट करने के साथ-साथ, एक अपुष्ट Log4j एप्लिकेशन केवल ERROR या FATAL लॉग प्रविष्टियों को मानक आउट में प्रिंट करेगा।

Log4j 2
के लिए उदाहरण

Log4j 1.2
के लिए उदाहरण

टीटीसीसी
TTCC एक संदेश प्रारूप है जिसका उपयोग log4j द्वारा किया जाता है। TTCC टाइम थ्रेड कैटेगरी कंपोनेंट के लिए एक संक्षिप्त शब्द है। यह निम्न पैटर्न का उपयोग करता है:

%r [%t] %-5p %c %x - %m%n

कहाँ उदाहरण आउटपुट

467 [मुख्य] ​​जानकारी org.apache.log4j.examples.Sort - मुख्य विधि से बाहर निकलना।

पोर्ट्स

 * log4c - C के लिए एक पोर्ट। Log4C एक C-आधारित कंप्यूटर डेटा लॉगिंग लाइब्रेरी है, जिसे LGPL लाइसेंस के तहत SourceForge पर जारी किया गया है। विभिन्न यूनिक्स ऑपरेटिंग सिस्टम के लिए autoconf ़ और  automake  फ़ाइलें प्रदान की जाती हैं।  माइक्रोसॉफ़्ट विंडोज़ ़ पर एमएसवीसी के साथ उपयोग के लिए  मेकफाइल  प्रदान की जाती है। सॉफ्टवेयर डेवलपर अपनी निर्माण इंजीनियरिंग आवश्यकताओं के आधार पर स्रोत को संकलित करने के लिए अपने स्वयं के मेक सिस्टम का उपयोग करना चुन सकते हैं। Log4c लाइब्रेरी का एक उदाहरण तीन तरीकों से कॉन्फ़िगर किया जा सकता है: पर्यावरण चर का उपयोग करके, प्रोग्रामेटिक रूप से, या XML कॉन्फ़िगरेशन फ़ाइल के माध्यम से। log4c में फ़ाइलें, स्ट्रीम और मेमोरी मैप की गई फ़ाइलों के लिए परिशिष्ट हैं। (कोई सॉकेट एडेप्टर नहीं।) अंतिम संस्करण 1.2.4 है, जो 2013 में जारी किया गया था, और परियोजना अब सक्रिय रूप से विकसित नहीं हुई है।
 * log4js - जावास्क्रिप्ट के लिए एक पोर्ट। Log4js Apache Software Foundation के लाइसेंस के अंतर्गत उपलब्ध है। Log4js की एक विशेष विशेषता ब्राउज़र की घटनाओं को सर्वर पर दूरस्थ रूप से लॉग करने की क्षमता है। अजाक्स (प्रोग्रामिंग) का उपयोग करके लॉगिंग घटनाओं को कई प्रारूपों (एक्सएमएल, जेएसओएन, सादा एएससीआईआई, आदि) में मूल्यांकन के लिए सर्वर पर भेजना संभव है। निम्न परिशिष्ट log4js के लिए लागू किए गए हैं: AjaxAppender, ConsoleAppender, FileAppender, JSConsoleAppender, MetatagAppender, और WindowsEventsAppender। निम्नलिखित लेआउट कक्षाएं प्रदान की जाती हैं: बेसिकलाउट, एचटीएमएल लेआउट, जेएसओएन लेआउट, और एक्सएमएल लेआउट। नवीनतम संस्करण 18 अक्टूबर 2018 का 2.0 था।
 * log4javascript - जावास्क्रिप्ट के लिए एक और पोर्ट। log4javascript log4j पर आधारित जावास्क्रिप्ट लॉगिंग फ्रेमवर्क है। नवीनतम संस्करण 1.4.13 था, 23 मई 2015 को जारी किया गया।
 * JSNLog - जावास्क्रिप्ट के लिए एक पोर्ट। Log4Net, NLog, Elmah या Common.Logging के साथ इंटरफेस करने वाले .NET सर्वर साइड घटक का उपयोग करके सर्वर साइड लॉग में जावास्क्रिप्ट लॉगर से संदेशों को स्वचालित रूप से रखता है। यह क्लाइंट और सर्वर साइड इवेंट्स के लिए एक एकीकृत लॉग प्रदान करने के लिए है। अनुरोध आईडी विशिष्ट उपयोगकर्ता से संबंधित घटनाओं से संबंधित हैं। कॉन्फ़िगरेशन एक सर्वर साइड web.config फ़ाइल के माध्यम से होता है। स्टैक ट्रेस सहित अपवाद लॉगिंग का समर्थन करता है। नवीनतम संस्करण 3.0.0 था और अद्यतन नियमित रूप से किए गए थे।
 * Apache Log4net - Microsoft .NET Framework के लिए एक पोर्ट। प्रारंभिक कार्य Neoworks द्वारा किया गया था और फरवरी 2004 में Apache Software Foundation को दान कर दिया गया था। .NET रनटाइम में नई सुविधाओं का लाभ उठाते हुए रूपरेखा मूल log4j के समान है। नेस्टेड डायग्नोस्टिक कॉन्टेक्स्ट (NDC) और मैप्ड डायग्नोस्टिक कॉन्टेक्स्ट (MDC) प्रदान करता है। नवीनतम संस्करण 2.0.15 था।
 * log4perl - log4j का पर्ल पोर्ट। फरवरी 2017 का संस्करण 1.49 चालू था.
 * Apache log4php - PHP के लिए एक बहुमुखी लॉगिंग फ्रेमवर्क। मूल रूप से PHP के लिए Apache log4j का एक पोर्ट, यह विभिन्न PHP विशिष्ट विशेषताओं को शामिल करने के लिए विकसित हुआ है।
 * पीएल-एसक्यूएल-लॉगिंग-यूटिलिटी पीएल/एसक्यूएल में लॉग4जे का एक अनुकूलन है।
 * Log4db2 LUW के लिए DB2 के लिए एक लॉगिंग यूटिलिटी है जो SQL PL कोड के साथ SQL निर्देशों का उपयोग करता है।
 * Apache Log4cxx - Apache log4j के बाद प्रतिरूपित C++ के लिए एक लॉगिंग फ्रेमवर्क, जो अधिकांश प्लेटफ़ॉर्म-विशिष्ट कोड के लिए Apache अपाचे पोर्टेबल रनटाइम उपयोग करता है और APR द्वारा समर्थित किसी भी प्लेटफ़ॉर्म पर प्रयोग करने योग्य होना चाहिए। नवीनतम संस्करण 0.13.0 है, जो 2022 में जारी किया गया था।
 * Log4r - रूबी कार्यक्रमों में उपयोग के लिए रूबी में लिखित एक व्यापक और लचीली लॉगिंग लाइब्रेरी। यह Apache Log4j प्रोजेक्ट की अधिकांश विशेषताओं से प्रेरित था और प्रदान करता है।

Log4Shell भेद्यता
एक ज़ीरो-डे (कंप्यूटिंग) | ज़ीरो-डे भेद्यता जिसमें Log4j 2 में मनमाना कोड निष्पादन शामिल है, डिस्क्रिप्टर Log4Shell (सामान्य भेद्यता और एक्सपोजर-2021-44228) दिया गया था, पाया गया और 24 नवंबर, 2021 को अलीबाबा समूह  द्वारा अपाचे को रिपोर्ट किया गया। और 9 दिसंबर, 2021 को ट्विटर पर प्रकाशित किया गया। प्रभावित सेवाओं में शामिल हैं Cloudflare, iCloud, Minecraft: Java Edition, स्टीम (सेवा), Tencent QQ और Twitter।  Apache Software Foundation ने Log4Shell को 10 की अधिकतम सामान्य भेद्यता स्कोरिंग सिस्टम गंभीरता रेटिंग दी, क्योंकि लाखों सर्वर संभावित रूप से शोषण के प्रति संवेदनशील हो सकते हैं। भेद्यता की विशेषता साइबर सुरक्षा फर्म टेनेबल, इंक। द्वारा पिछले दशक की सबसे बड़ी, सबसे महत्वपूर्ण भेद्यता के रूप में की गई थी और लुनासेक के फ्री वोर्टली ने इसे आपदाजनक अनुपात की डिजाइन विफलता के रूप में चित्रित किया। संयुक्त राज्य अमेरिका में, साइबर साइबर सुरक्षा और बुनियादी ढांचा सुरक्षा एजेंसी (CISA) के निदेशक, जेन ईस्टरली ने शोषण को महत्वपूर्ण करार दिया और विक्रेताओं को सॉफ़्टवेयर अपडेट को प्राथमिकता देने की सलाह दी, और जर्मन एजेंसी सूचना सुरक्षा के लिए संघीय कार्यालय (BSI) ने शोषण को अपने उच्चतम खतरे के स्तर पर होने के रूप में नामित किया, इसे एक अत्यंत महत्वपूर्ण खतरे की स्थिति (अनुवादित) कहा। साइबर सुरक्षा के लिए कनाडाई केंद्र (CCCS) ने संगठनों से तत्काल कार्रवाई करने का आह्वान किया। भेद्यता पैदा करने वाली सुविधा को कॉन्फ़िगरेशन सेटिंग के साथ अक्षम किया जा सकता है, जिसे हटा दिया गया था Log4j संस्करण 2.15.0-rc1 में (आधिकारिक तौर पर भेद्यता प्रकाशित होने से तीन दिन पहले 6 दिसंबर, 2021 को जारी किया गया), और दूरस्थ लुकअप को प्रतिबंधित करने वाली विभिन्न सेटिंग्स द्वारा प्रतिस्थापित किया गया, जिससे भेद्यता कम हो गई। अतिरिक्त सुरक्षा के लिए, जावा नामकरण और निर्देशिका इंटरफ़ेस का उपयोग करने वाली सभी सुविधाएँ, जिस पर यह भेद्यता आधारित थी, डिफ़ॉल्ट रूप से अक्षम हो जाएंगी, और संस्करण 2.16.0 से संदेश लुकअप के लिए समर्थन हटा दिया जाएगा।

यह भी देखें

 * चेनसॉ (लॉग फाइल व्यूअर)