0

[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</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/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí