[Java] Log4j hello world example
Bài hướng dẫn này, chúng tôi sẽ giới thiệu cho các bạn cách sử dụng log4j 1.2.x để log error hoặc debug message trong Java. 1. Project Directory 2. Tải Log4j Khai báo dependencies: pom.xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifa ...
Bài hướng dẫn này, chúng tôi sẽ giới thiệu cho các bạn cách sử dụng log4j 1.2.x để log error hoặc debug message trong Java.
1. Project Directory
2. Tải Log4j Khai báo dependencies:
pom.xml
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
3. log4j.properties Tao file log4j.properties và đặt nó vào trong thư mục resource (minh hoạ ở bước 1)
Chú ý: 1.Với standard alone app, hãy chắc chắn rằng `log4j.properties` nằm ở trong thư mục `project/classes` 2.Với Java web application, `log4j.properties` phải nằm trong thư mục `WEB-INF/classses`
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
Chú ý: Để hiểu về `ConversionPattern`, xem thêm [log4j PatternLayout guide](http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html)
Giải thích một tí: 1. %d{yyyy-MM-dd HH:mm:ss} là định dạng năm tháng ngày 2. %-5p là độ ưu tiên của logger 3. %c{1} là tên của logger 4. %L là số lượng dòng đc in ra của logger 5. %m%n là nội dung message và thêm dấu xuống dòng
4. Demo Đầu tiên tạo một final static logger và đặt tên cho nó. Thông thường thì dùng package name. final static Logger logger = Logger.getLogger(classname.class);
Sau đó, log ra message với những độ ưu tiên khác nhau từ debug, info, warn, error, fatal. Thông thường bạn chỉ cần debug và error
//logs a debug message if(logger.isDebugEnabled()){ logger.debug("This is debug"); } //logs an error message with parameter logger.error("This is error : " + parameter); //logs an exception thrown from somewhere logger.error("This is error", exception);
4.1 Logger set debug priority
log4j.properties
log4j.rootLogger=DEBUG, stdout #...
HelloExample.java
package com.mkyong; import org.apache.log4j.Logger; public class HelloExample{ final static Logger logger = Logger.getLogger(HelloExample.class); public static void main(String[] args) { HelloExample obj = new HelloExample(); obj.runMe("mkyong"); } private void runMe(String parameter){ if(logger.isDebugEnabled()){ logger.debug("This is debug : " + parameter); } if(logger.isInfoEnabled()){ logger.info("This is info : " + parameter); } logger.warn("This is warn : " + parameter); logger.error("This is error : " + parameter); logger.fatal("This is fatal : " + parameter); } }
Output
2014-07-02 20:52:39 DEBUG HelloExample:19 - This is debug : mkyong 2014-07-02 20:52:39 INFO HelloExample:23 - This is info : mkyong 2014-07-02 20:52:39 WARN HelloExample:26 - This is warn : mkyong 2014-07-02 20:52:39 ERROR HelloExample:27 - This is error : mkyong 2014-07-02 20:52:39 FATAL HelloExample:28 - This is fatal : mkyong
4.2 Logger set error priority
log4j.properties
log4j.rootLogger=ERROR, stdout #...
Chạy HelloExample một lần nữa và bạn sẽ thấy output
2014-07-02 20:56:02 ERROR HelloExample:27 - This is error : mkyong 2014-07-02 20:56:02 FATAL HelloExample:28 - This is fatal : mkyong
Nếu một priority được khai báo trong log4j.properties, chỉ có message có độ ưu tiên cao hơn hoặc bằng nó mới đc in ra output.
5. Demo - Log an Exception Ví dụ dưới đây show cách sử dụng log4j để log exception
HelloExample2.java
package com.mkyong; import org.apache.log4j.Logger; public class HelloExample2{ final static Logger logger = Logger.getLogger(HelloExample2.class); public static void main(String[] args) { HelloExample2 obj = new HelloExample2(); try{ obj.divide(); }catch(ArithmeticException ex){ logger.error("Sorry, something wrong!", ex); } } private void divide(){ int i = 10 /0; } }
Output
2014-07-02 21:03:10 ERROR HelloExample2:16 - Sorry, something wrong! java.lang.ArithmeticException: / by zero at com.mkyong.HelloExample2.divide(HelloExample2.java:24) at com.mkyong.HelloExample2.main(HelloExample2.java:14)
Nguồn: http://www.mkyong.com/logging/log4j-hello-world-example/