Apache Log4j là gì? ghi log ra, vào file, console với Apache Log4j

Apache Log4j là gì? ghi log ra, vào file, console với Apache Log4j

Apache Log4j là gì?

Apache Log4j hay thường gọi là Log4j là một trình ghi log (thư viện/framework) được viết bằng ngôn ngữ Java.

Apache Log4j là một mã nguồn mở cung cấp bởi Apache.

Cách thành phần chính của Log4j:

  • loggers: Chịu trách nhiệm thu thập thông tin log
  • appenders: Chịu trách nhiệm ghi log tới các vị trí đã được cấu hình (file, console).
  • layouts: Chịu trách nhiệm định dạng (format) kết quả log

Apache Log4j là gì? ghi log ra, vào file, console với Apache Log4j

Các tính năng của Log4j

  • Thread safe
  • Tối ưu cho tốc độ
  • Hỗ trợ nhiều output (file + console)
  • Hỗ trợ internationalization
  • Được thiết kế để xử lý Java Exception khi start
  • Hỗ trợ nhiều level log: ALL, TRACE, INFO, WARNING, ERROR, FATAL

Demo

Thư viện sử dụng

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>stackjava.com</groupId>
  <artifactId>Log4j</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

  </dependencies>
</project>

File định dạng (format) log đầu ra:

# Root logger option

## Only show error log
#log4j.rootLogger= ERROR, stdout, file

## Only show error log + info log
#log4j.rootLogger= INFO, stdout, file

## Show error log + info log + debug log
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} %p %c{1}: %C %M - %m%n

# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=myapp.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

Class demo

package stackjava.com.log4j.demo;

import org.apache.log4j.Logger;

public class Demo {
  private static final Logger logger = Logger.getLogger(Demo.class);

  public static void main(String[] args) {
    logger.debug("debug log");
    logger.error("error log");
    logger.info("info log");
  }
}

Kết quả:

demo log4j

Hai tham số MaxFileSizeMaxBackupIndex dùng để chỉ định kích của file log và số file log được tạo ra.

log4j.appender.file.MaxFileSize=1KB
log4j.appender.file.MaxBackupIndex=10

Ví dụ như ở trên, file log sẽ được tách ra thành nhiều file nếu đạt tới kích thước 1KB, và số file log được tạo nhiều nhất là 10 file.

Ví dụ:

public class Demo {
  private static final Logger logger = Logger.getLogger(Demo.class);

  public static void main(String[] args) {
    for (int i = 0; i< 1000; i++) {
      logger.debug("debug log");
      logger.error("error log");
      logger.info("info log");
    }
  }
}

Kết quả:

 

Okay, Done!

Ở trên mình đã hướng dẫn xong 2 cái ghi log đơn giản nhất là ghi ra file và console.

Phần tiếp theo chúng ta sẽ tìm hiểu ghi log vào database (https://stackjava.com/library/log4j-db-appender-ghi-log-ra-dababase-su-dung-log4j.html)

 

Download code ví dụ trên tại đây

 

References:

https://wiki.apache.org/logging

 

 

 

 

stackjava.com