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
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ả:
Hai tham số MaxFileSize
và MaxBackupIndex
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