Log4j
Cấu hình Log4j

Log4j có thể được cấu hình thông qua file cấu hình hoặc mã Java. File cấu hình có thể được viết dưới định dạng XML, JSON, YAML, hoặc file properties. File cấu hình này có 3 thàn phần chính: Bộ ghi (Logger), Bộ nối (Appender) và Bản mẫu (Layout). Cấu hình nhật ký bằng file có một lợi thế là việc ghi có thể tiến hành hoặc tạm ngưng mà không cần phải sửa đổi mã nguồn ứng dụng. Ứng dụng có thể cho phép chạy mà không cần phải ghi nhật ký đến khi xuất hiện lỗi, ví dụ như thế, và khi đó, việc ghi nhật ký lại được kích hoạt lại đơn giản bằng cách sửa đổi file cấu hình.
Bộ ghi (Loggers) được dùng để chỉ ra tên của nơi xuất các thông điệp (message) mà quá trình ghi nhật ký tạo ra. Đây là tên mà ứng dụng Java nhận biết được. Mỗi Bộ ghi được cấu hình riêng biệt ở mức ghi (FATAL, ERROR, v.v.) mà nó đang thực hiện. Ở các phiên bản cũ của Log4j, nó được đề cập đến là thư mục (category) và mức ưu tiên (priority), nhưng nay nó được gọi tương ứng là bộ ghi và cấp độ. Mỗi Bộ ghi có thể gởi thông điệp ghi (log message) tới nhiều Bộ nối (Appenders).
Sản phẩm thật sự được tạo là bởi từ Bộ nối (Appenders). Log4j cung cấp nhiều Bộ nối mà tên của chúng thể hiện phần nào tính năng, như FileAppender, RollingFileAppender, ConsoleAppender, SocketAppender, SyslogAppender, và SMTPAppender. Logj 2 thêm các Bộ nối mới nhằm hỗ trợ ghi nhật ký vào Apache Flume, Java Persistence API, Apache Kafka, các hệ cơ sở dữ liệu NoSQL, tập tin ánh xạ dữ liệu (Memory-mapped file), tập tin truy cập ngẫu nhiên (Random Access file) và điểm cuối ZeroMQ. Nhiều Bộ nối có thể sử dụng cho một Bộ ghi, như thế, một thông tin nhật ký có thẻ được ghi ra ở nhiều nơi khác nhau; ví dụ như trường hợp ghi thông tin nhật ký ra một tập tin cục bộ và tới một trình thu nhận thông qua socket trên một máy tính khác.
Bộ nối sử dụng Bản mẫu để định dạng các mẫu nhật ký. PatternLayout là bản mẫu thông dụng để ghi nhật ký, bản mẫu này hỗ trợ ghi mỗi-lần-một-dòng, sử dụng chuỗi pattern tương tự như cách sử dụng hàm printf trong ngôn ngữ C / C++. Các Bản mẫu HTMLLayout và XMLLayout được sử dụng khi định dạng nhật ký với các cấu trúc HTML hoặc XML thuận tiện hơn. Log4j 2 cũng thêm các Bản mẫu cho định dạng CSV, Graylog Extended Log Format (GELF), JSON, YAML và RFC-5424.
Với Log4j 2, Bộ lọc (Filters) được sử dụng để cấu hình để giúp việc kiểm soát chặt chẽ hơn mẫu nhật ký nào nên được xử lý bởi Bộ ghi nào và Bộ nối nào. Bên cạnh đó, ngoài việc lọc theo cấp độ và sử dụng biểu thức chính quy, Log4j 2 bổ sung các tính năng lọc theo tần suất mẫu nhật ký xuất hiện, lọc theo thời gian, lọc theo các đặc tính của sự kiện khi nhật ký khác như Markers hoặc Thread Context Map và lọc sử dụng ngôn ngữ kịch bản JSR 223.
To debug a misbehaving configuration:
In Log4j hai configurations set the status attribute to TRACE to send internal status logging output to standard out. To enable status logging before the configuration is found, use the Java VM property -Dorg.apache.logging.log4j.simplelog.StatusLogger.level=trace.
In Log4j 1, use the Java VM property -Dlog4j.debug.
To find out where a log4j2.xml configuration file was loaded from inspect getClass().getResource("/log4j2.xml").
Có một dạng cấu hình cho Log4j được ngầm hiểu là "không được cấu hình" (unconfigured) hoặc "mặc định" (default), khi mà Log4j được sử dụng trong ứng dụng nền tảng Java nhưng lại thiếu cấu hình cho nó. Khi đó, stdout hiển thị cảnh báo rằng chương trình chưa được cấu hình, và đường dẫn tới URL của web site Log4j nơi thông tin chi tiết và cảnh báo được tìm thấy. Ngoài việc hiển thị cảnh báo này, ứng dụng sử dụng Log4j thiếu cấu hình chỉ ghi lại các mẫu nhật ký ở cấp độ ERROR hoặc FATAL vào stdout.