Trình ghi nhật ký trong Java là gì và tại sao bạn sử dụng nó?



Bài viết này về Trình ghi nhật ký trong Java là hướng dẫn toàn diện về API ghi nhật ký Java được sử dụng cho các giải pháp ghi nhật ký trong khi tạo dự án.

Ghi nhật ký là một tính năng quan trọng cần được các nhà phát triển xem xét để tìm lại các lỗi. , là một trong những ngôn ngữ lập trình phổ biến nhất, đi kèm với cách tiếp cận có thể tùy chỉnh để ghi nhật ký bằng cách cung cấp một API ghi nhật ký cơ bản. Vì vậy, trong bài viết này về Logger trong Java, tôi sẽ thảo luận về cách có thể sử dụng tính năng này để bật tính năng đăng nhập có thể mở rộng trong Java.

Các chủ đề sau sẽ được đề cập trong bài viết này:





    1. Cần ghi nhật ký
    2. Các thành phần ghi nhật ký
    3. Logger là gì?
    4. Appender hoặc Handlers
    5. Bố cục hoặc bộ định dạng

Trước đây, chúng ta đã đi sâu vào đăng nhập java, hãy để chúng ta hiểu sự cần thiết của việc đăng nhập.

Cần ghi nhật ký

Trong khi xây dựng các ứng dụng, chúng tôi thường gặp phải các lỗi phải được gỡ lỗi. Vì vậy, với sự trợ giúp của các bản ghi, chúng ta có thể dễ dàng nhận được thông tin về những gì đang xảy ra trong ứng dụng với hồ sơ về lỗi và các trường hợp bất thường. Bây giờ, bạn có thể nghĩ rằng, tại sao không sử dụng câu lệnh System.out.print () trong . Vấn đề với những câu lệnh này là thông báo nhật ký sẽ chỉ được in trên bảng điều khiển. Vì vậy, khi bạn đóng bảng điều khiển, tự động, tất cả các bản ghi sẽ bị mất. Do đó, các bản ghi sẽ không được lưu trữ vĩnh viễn và được hiển thị từng cái một, vì nó là một môi trường đơn luồng.



Để tránh những vấn đề như vậy, việc đăng nhập Java được đơn giản hóa với sự trợ giúp củaAPI được cung cấp thông quajava.util.logginggói, vàorg.apache.log4j. *gói hàng.

Các thành phần ghi nhật ký

Các thành phần ghi nhật ký Java giúp nhà phát triển tạo nhật ký, chuyển các nhật ký đến đích tương ứng và duy trì định dạng thích hợp. Sau đây là ba thành phần:

  • Người khai thác gỗ - Chịu trách nhiệm nắm bắt các bản ghi log và chuyển cho Appender tương ứng.
  • Người bổ sung hoặc Người xử lý - Họ có trách nhiệm ghi lại các sự kiện nhật ký đến một điểm đến. Trình nối thêm định dạng sự kiện với sự trợ giúp của Bố cục, trước khi gửi kết quả đầu ra.
  • Bố cục hoặc bộ định dạng - Chịu trách nhiệm xác định dữ liệu trông như thế nào khi xuất hiện trong mục nhập nhật ký.

Bạn có thể tham khảo hình ảnh dưới đây để biết hoạt động của cả ba thành phần:



Các thành phần ghi nhật ký - Logger trong Java - Edureka

cách thiết lập php

Khi một ứng dụng thực hiện cuộc gọi ghi nhật ký, thành phần Logger ghi lại sự kiện trong LogRecord và chuyển tiếp sự kiện đó đến Appender thích hợp. Sau đó, nó tạo thành bản ghi bằng cách sử dụng Bố cục theo định dạng yêu cầu. Ngoài điều này ra, bạn cũng có thể sử dụng nhiều Bộ lọc để chỉ định Phần bổ sung nào sẽ được sử dụng cho các sự kiện.

Bây giờ, chúng ta hãy hiểu sâu về trình ghi nhật ký trong Java là gì.

Logger trong Java là gì?

Bộ ghi nhật ký trong Java là các đối tượng kích hoạt các sự kiện nhật ký, Chúng được tạo và được gọi trong mã của ứng dụng, nơi chúng tạo ra các Sự kiện nhật ký trước khi chuyển chúng đến thành phần tiếp theo là một Appender. Bạn có thể sử dụng nhiều bộ ghi nhật ký trong một lớp để phản hồi các sự kiện khác nhau hoặc sử dụng bộ ghi nhật ký trong một hệ thống phân cấp. Chúng thường được đặt tên bằng cách sử dụng không gian tên phân tách bằng dấu chấm phân cấp. Ngoài ra, tất cả các tên Logger phải dựa trên lớp hoặc tên gói của thành phần đã ghi.

Ngoài ra, mỗi Người ghi nhật ký còn theo dõi tổ tiên hiện có gần nhất trong Nhật ký không gian tên và cũng có 'Cấp độ' được liên kết với nó. Vâng, tôi sẽ thảo luận về Logger trong phần sau của bài viết này, nhưng trước đó, hãy để tôi hướng dẫn bạn cách tạo Logger trong Java.

Tạo trình ghi nhật ký mới

Quá trình tạo Logger mới trong Java khá đơn giản. Bạn phải sử dụngLogger.getLogger ()phương pháp. CácgetLogger () xác định tên của Người ghi nhật ký và lấy chuỗi làm tham số. Vì vậy, nếu Logger tồn tại trước đó thì Logger đó được trả về, nếu không thì Logger mới sẽ được tạo.

Cú pháp:

static Logger logger = Logger.getLogger (SampleClass.class.getName ())

Ở đây, SampleClass là tên lớp mà chúng ta đang lấy đối tượng Logger.

Thí dụ:

public class Khách hàng {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Bây giờ tôi đã cho bạn biết cách tạo Logger trong Java, chúng ta hãy xem các cấp độ khác nhau có sẵn trong việc ghi nhật ký.

Mức độ nhật ký

Cấp độ nhật ký được sử dụng để phân loại nhật ký theo mức độ nghiêm trọng của chúng hoặc tác động đến tính ổn định của ứng dụng. Cácorg.apache.log4j. *gói vàjava.util.loggingcả hai đều cung cấp các cấp độ ghi nhật ký khác nhau. Hãy để chúng tôi xem xét từng người một trong số họ.

org.apache.log4j. *gói cung cấp các mức sau theo thứ tự giảm dần:

  • CHẤT BÉO
  • LỖI
  • CẢNH BÁO
  • THÔNG TIN
  • NỢ

java.util.logginggói cung cấp các mức sau theo thứ tự giảm dần:

ví dụ về webdriver selen với dưa chuột trong nhật thực
  • SEVERE (MỨC CAO NHẤT)
  • CẢNH BÁO
  • THÔNG TIN
  • CẤU HÌNH
  • KHỎE
  • CUỐI CÙNG
  • CUỐI CÙNG (MỨC THẤP NHẤT)

Ngoài ra, gói trên cũng cung cấp hai cấp độ bổ sungTẤT CẢTẮTđược sử dụng để ghi nhật ký tất cả các tin nhắn và tắt ghi nhật ký tương ứng.

Ví dụ về Đăng nhập trong Java bằng cách sử dụngorg.apache.log4j. *gói:

import org.apache.log4j.Logger public class Customer {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('CẢNH BÁO' ' ) logger.fatal ('FATAL') logger.debug ('GỠ LỖI') logger.info ('THÔNG TIN') System.out.println ('Đầu ra cuối cùng')}}

Vì vậy, nếu đầu ra của bạn làroot logger ở cấp độ WARN trong log4j.properties , sau đó tất cả các thông báo lỗi có mức độ ưu tiên cao hơn WARN sẽ được in như bên dưới:

Bạn cũng có thể đặt mức bằng cách sử dụng phương thức setLevel () từjava.util.logginggói như dưới đây:

logger.setLevel (Level.WARNING)

Ví dụ về Đăng nhập trong Java bằng cách sử dụngjava.util.logginggói:

package edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * class EdurekaLogger {private final static Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) public void sampleLog () {LOGGER.log (Level.WARNING, 'Chào mừng bạn đến với Edureka!')}} public class Khách hàng {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level.WARNING, 'Xin chào! Chào mừng bạn đến từ Edureka')}}

Để cho phép đăng nhập vào ứng dụng của bạn bằng cách sử dụngorg.apache.log4j. *gói hoặcjava.util.logging, bạn phải định cấu hình tệp thuộc tính. Tiếp theo trong bài viết này về Logger trong Java, chúng ta hãy thảo luận về tệp thuộc tính của cả hai.

Tệp thuộc tính của Gói Log4j và Java Util

Tệp Thuộc tính Log4j mẫu:

# Kích hoạt tùy chọn trình ghi gốc log4j.rootLogger = INFO, tệp, stdout # Đính kèm các phần phụ để in tệp log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 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 # Đính kèm phần phụ để in trên bảng điều khiển 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
  • Tệp thuộc tính Log4j được tạo bên trong thư mục src của dự án.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> In tất cả nhật ký trong một tệp
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> In tất cả nhật ký trong bảng điều khiển
  • log4j.appender.file.File = D: loglogging.log -> Chỉ định vị trí tệp nhật ký
  • log4j.appender.file.MaxFileSize = 10MB -> Kích thước tối đa của tệp nhật ký thành 10MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Giới hạn số lượng tệp sao lưu là 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Chỉ định mẫu mà các bản ghi sẽ in ra tệp nhật ký.
  • log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Đặt mẫu chuyển đổi mặc định.

Mẫu vật Tệp thuộc tính gói Java Util

Xử lý = java.util.logging.ConsoleHandler .level = CẢNH BÁO # Đầu ra sẽ được lưu trữ trong thư mục mặc định java.util.logging.FileHandler.pattern =% h / java% u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Mức độ nhật ký sẽ được giới hạn ở mức CẢNH BÁO trở lên. java.util.logging.ConsoleHandler.level = CẢNH BÁO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Đây,

tạo một tham số trong hoạt cảnh
  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Các tệp nhật ký sẽ được ghi vàoC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->Số lượng tối đa mà trình ghi nhật ký ghi vào bất kỳ một tệp nào tính bằng byte.
  • java.util.logging.FileHandler.count = 1 -> Chỉ định số lượng tệp đầu ra
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Đề cập đến trình định dạng được sử dụng để định dạng. Ở đây XML Formatter được sử dụng.
  • java.util.logging.ConsoleHandler.level = WARNING -> Đặt mức nhật ký mặc định thành CẢNH BÁO
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Chỉ địnhĐịnh dạngđược sử dụng bởi tất cảConsoleHandler'S. Ở đây, SimpleFormatter được sử dụng.

Ghi nhật ký sự kiện

Để đăng nhập các sự kiện , bạn phải đảm bảo rằng bạn chỉ định một cấp độ để dễ dàng lọc ra các sự kiện. Để chỉ định một cấp độ và đề cập đến một thông báo, bạn có thể sử dụng các phương pháp dưới đây:

Phương pháp 1:

logger.log (Level.INFO, “Hiển thị thông báo”)
Ở đây, cấp độ là INFO và thông báo được in là 'Thông báo hiển thị'.

Phương pháp 2:

logger.info (“Hiển thị thông báo”)

Để đảm bảo rằng Trình ghi nhật ký trong Java, chỉ ghi nhật ký các sự kiện ở hoặc cao hơn cấp INFO, bạn có thể sử dụng setLevel () phương pháp thảo luận ở trên.

Bây giờ, tôi đã thảo luận về cách sử dụng Logger trong Java, chúng ta hãy thảo luận về thành phần tiếp theo của kiến ​​trúc Log4j, tức là Appenders.

Appender hoặc Handlers

Appender hoặc Handlers có trách nhiệm ghi lại các sự kiện nhật ký đến một điểm đến. Mỗi bộ ghi có quyền truy cập vào nhiều trình xử lý và nhận thông báo nhật ký từ bộ ghi. Sau đó, Người nối sử dụng Trình định dạng hoặc Bố cục để định dạng các sự kiện và gửi chúng đến đích tương ứng.

Có thể tắt Appender bằng phương thức setLevel (Level.OFF). Hai trình xử lý tiêu chuẩn nhất trongjava.util.logginggói như sau:

  • FileHandler: Ghi thông điệp nhật ký vào tệp
  • ConsoleHandler: Viết thông báo nhật ký vào bảng điều khiển

Để bạn hiểu rõ hơn, tôi đã giải thích một số Trình bổ sung trong phần thuộc tính.

Bố cục hoặc bộ định dạng

Bố cục của Trình định dạng được sử dụng để định dạng và chuyển đổi dữ liệu trong một sự kiện nhật ký.Khung ghi nhật ký cung cấp các Bố cục cho HTML, XML, Syslog, JSON, văn bản thuần túy và các bản ghi khác.

  1. SimpleFormatter : Tạo tin nhắn văn bản với thông tin cơ bản.
  2. XMLFormatter : Tạo thông báo XML cho nhật ký

Để bạn hiểu rõ hơn, tôi đã giải thích một số Bố cục trong phần thuộc tính.Với điều này, chúng ta đến phần cuối của blog này về “Trình ghi nhật ký trong Java”. Tôi hy vọng các bạn rõ ràng với những gì đã được dạy cho bạn trong bài viết này.

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo và cấp chứng chỉ về Java J2EE và SOA của Edureka được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Logger in Java” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.