Java Language
log4j / log4j2
खोज…
परिचय
Apache Log4j एक जावा-आधारित लॉगिंग उपयोगिता है, यह कई जावा लॉगिंग फ्रेमवर्क में से एक है। यह विषय यह दिखाना है कि उपयोग के सभी संभावित पहलुओं पर विस्तृत उदाहरण के साथ जावा में Log4j को कैसे सेटअप और कॉन्फ़िगर किया जाए।
वाक्य - विन्यास
- Logger.debug ("लॉग करने के लिए पाठ"); // लॉगिंग डिबगिंग जानकारी
- Logger.info ("लॉग करने के लिए पाठ"); // लॉगिंग आम जानकारी
- Logger.error ("लॉग करने के लिए पाठ"); // लॉगिंग त्रुटि जानकारी
- Logger.warn ("लॉग करने के लिए पाठ"); // लॉगिंग चेतावनियाँ
- Logger.trace ("लॉग करने के लिए पाठ"); // लॉगिंग ट्रेस जानकारी
- Logger.fatal ("लॉग करने के लिए पाठ"); // घातक त्रुटियों को लॉग करना
- पैरामीटर लॉगिंग के साथ Log4j2 उपयोग:
- Logger.debug ("डिबग परमेस {} {} {}", param1, param2, param3); // लॉगिंग डीबग पैरामीटर के साथ
- Logger.info ("Info params {} {} {}", param1, param2, param3); // पैरामीटर के साथ लॉगिंग जानकारी
- Logger.error ("त्रुटि params {} {} {}", param1, param2, param3); // मापदंडों के साथ लॉगिंग त्रुटि
- लकड़हारा.नार ("चेतावनी परमेस {} {} {}", param1, param2, param3); // मापदंडों के साथ चेतावनी लॉगिंग
- Logger.trace ("ट्रेस परमेस {} {} {}", param1, param2, param3); // मापदंडों के साथ लॉगिंग ट्रेस
- लकड़हारा.पताल ("घातक पारम {} {} {}", परम 1, परम 2, परम 3); // मापदंडों के साथ घातक लॉगिंग
- Logger.error ("पकड़ा गया अपवाद:", पूर्व); // संदेश और स्टैकट्रेस के साथ लॉगिंग अपवाद (स्वचालित रूप से जोड़ा जाएगा)
टिप्पणियों
Log4j 1 के लिए जीवन का अंत तक पहुँच गया
5 अगस्त, 2015 को लॉगिंग सर्विसेज प्रोजेक्ट मैनेजमेंट कमेटी ने घोषणा की कि Log4j 1.x जीवन के अंत तक पहुँच गया था। घोषणा के पूर्ण पाठ के लिए कृपया अपाचे ब्लॉग देखें। Log4j 1 के उपयोगकर्ताओं को Apache Log4j 2 में अपग्रेड करने की सिफारिश की गई है ।
प्रेषक: http://log.apache.org/log4j/1.2/
Log4j कैसे प्राप्त करें
वर्तमान संस्करण (log4j2)
मावेन का उपयोग करना:
अपनी POM.xml
फ़ाइल में निम्न निर्भरता जोड़ें:
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
आइवी का उपयोग करना:
<dependencies>
<dependency org="org.apache.logging.log4j" name="log4j-api" rev="2.6.2" />
<dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.6.2" />
</dependencies>
ग्रेडेल का उपयोग करना:
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6.2'
}
Log4j 1.x प्राप्त करना
नोट: Log4j 1.x एंड-ऑफ-लाइफ (EOL) (रिमार्क्स देखें) तक पहुंच गया है।
मावेन का उपयोग करना:
इस निर्भरता को POM.xml
फ़ाइल में घोषित करें:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
आइवी का उपयोग करना:
<dependency org="log4j" name="log4j" rev="1.2.17"/>
पद क्रम:
compile group: 'log4j', name: 'log4j', version: '1.2.17'
बिल्डर का उपयोग करना:
'log4j:log4j:jar:1.2.17'
पथ निर्माण में मैन्युअल रूप से जोड़ना:
Log4j वेबसाइट परियोजना से डाउनलोड करें
Java कोड में Log4j का उपयोग कैसे करें
पहले एक final static logger
वस्तु बनाने की आवश्यकता है:
final static Logger logger = Logger.getLogger(classname.class);
फिर, लॉगिंग विधियों को कॉल करें:
//logs an error message
logger.info("Information about some param: " + parameter); // Note that this line could throw a NullPointerException!
//in order to improve performance, it is advised to use the `isXXXEnabled()` Methods
if( logger.isInfoEnabled() ){
logger.info("Information about some param: " + parameter);
}
// In log4j2 parameter substitution is preferable due to readability and performance
// The parameter substitution only takes place if info level is active which obsoletes the use of isXXXEnabled().
logger.info("Information about some param: {}" , parameter);
//logs an exception
logger.error("Information about some error: ", exception);
संपत्ति फ़ाइल सेट करना
Log4j आपको सांत्वना और फ़ाइल को एक ही समय में लॉग इन करने की सकारात्मकता देता है। एक log4j.properties
फ़ाइल बनाएँ और इस मूल विन्यास के अंदर डालें:
# Root logger option
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
यदि आप मावेन का उपयोग कर रहे हैं, तो इस उचित फ़ाइल को पथ में रखें:
/ProjectFolder/src/java/resources
बेसिक log4j2.xml कॉन्फ़िगरेशन फ़ाइल
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
यह एक बुनियादी log4j2.xml कॉन्फ़िगरेशन है जिसमें एक कंसोल ऐपेंडर और एक रूट लकड़हारा है। पैटर्न लेआउट निर्दिष्ट करता है कि बयानों को लॉग करने के लिए किस पैटर्न का उपयोग किया जाना चाहिए।
Log4j2.xml की लोडिंग को डीबग करने के लिए आप विशेषता status = <WARN | DEBUG | ERROR | FATAL | TRACE | INFO>
अपने log4j2.xml के कॉन्फ़िगरेशन टैग में।
आप एक मॉनिटर अंतराल भी जोड़ सकते हैं ताकि यह निर्दिष्ट अंतराल अवधि के बाद फिर से कॉन्फ़िगरेशन को लोड करे। मॉनिटर अंतराल को कॉन्फ़िगरेशन टैग में निम्नानुसार जोड़ा जा सकता है: monitorInterval = 30
। इसका मतलब है कि हर 30 सेकंड में कॉन्फ़िगरेशन लोड हो जाएगा।
Log4j 1.x से 2.x की ओर पलायन
यदि आप अपने प्रोजेक्ट में मौजूदा log4j 1.x से log4j 2.x पर माइग्रेट करना चाहते हैं तो सभी मौजूदा log4j 1.x निर्भरताएँ हटा दें और निम्न निर्भरता जोड़ें:
Log4j 1.x एपीआई ब्रिज
मावेन बिल्ड
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
आइवी बिल्ड
<dependencies>
<dependency org="org.apache.logging.log4j" name="log4j-1.2-api" rev="2.6.2" />
</dependencies>
ग्रेडल बिल्ड
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: '2.6.2'
}
Apache Commons Logging Bridge यदि आपका प्रोजेक्ट Apache Commons Logging का उपयोग कर रहा है जो log4j 1.x का उपयोग करता है और आप इसे log4j 2.x पर माइग्रेट करना चाहते हैं तो निम्न निर्भरताएँ जोड़ें:
मावेन बिल्ड
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
आइवी बिल्ड
<dependencies>
<dependency org="org.apache.logging.log4j" name="log4j-jcl" rev="2.6.2" />
</dependencies>
ग्रेडल बिल्ड
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.6.2'
}
नोट: अपाचे कॉमन्स लॉगिंग के किसी भी मौजूदा निर्भरता को दूर न करें
संदर्भ: https://log.apache.org/log4j/2.x/maven-artifacts.html
गुण-फ़ाइल DB में प्रवेश करने के लिए
इस उदाहरण के लिए काम करने के लिए आपको उस सिस्टम पर संगत JDBC ड्राइवर की आवश्यकता होगी जो डेटाबेस चल रहा है। एक ओपनसोर्स एक है जो आपको आईबीएम सिस्टम पर DB2 डेटाबेस से कनेक्ट करने की अनुमति देता है जो मुझे यहां मिल सकता है: JT400
भले ही यह उदाहरण DB2 विशिष्ट है, यह लगभग हर दूसरी प्रणाली के लिए काम करता है यदि आप ड्राइवर का आदान-प्रदान करते हैं और JDBC URL को अनुकूलित करते हैं।
# Root logger option
log4j.rootLogger= ERROR, DB
# Redirect log messages to a DB2
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
# Set JDBC URL (!!! adapt to your target system !!!)
log4j.appender.DB.URL=jdbc:as400://10.10.10.1:446/DATABASENAME;naming=system;errors=full;
# Set Database Driver (!!! adapt to your target system !!!)
log4j.appender.DB.driver=com.ibm.as400.access.AS400JDBCDriver
# Set database user name and password
log4j.appender.DB.user=USER
log4j.appender.DB.password=PASSWORD
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO DB.TABLENAME VALUES('%d{yyyy-MM-dd}','%d{HH:mm:ss}','%C','%p','%m')
# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
फ़िल्टर Logoutput स्तर से (log4j 1.x)
आप ERROR
स्तर की तुलना में केवल "कम" संदेशों को लॉग करने के लिए एक फिल्टर का उपयोग कर सकते हैं। लेकिन फ़िल्टर PropertyConfigurator द्वारा समर्थित नहीं है। तो आपको इसे इस्तेमाल करने के लिए XML config में बदलना होगा । फ़िल्टर के बारे में log4j-Wiki देखें।
उदाहरण "विशिष्ट स्तर"
<appender name="info-out" class="org.apache.log4j.FileAppender">
<param name="File" value="info.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="info" />
<param name="AcceptOnMatch" value="true"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>
या "स्तर सीमा"
<appender name="info-out" class="org.apache.log4j.FileAppender">
<param name="File" value="info.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="info"/>
<param name="LevelMin" value="info"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>