Hướng dẫn lỗi org apache commons logging logfactory năm 2024
Như bạn đã biết, lịch sử của nhật ký bắt đầu bằng `System.err.println()`việc xuất bản ghi ra bàn điều khiển. Nó vẫn được sử dụng tích cực để gỡ lỗi, ví dụ: Intellij IDEA sử dụng nó để hiển thị thông báo lỗi cho bảng điều khiển. Nhưng tùy chọn này không có bất kỳ cài đặt nào, vì vậy hãy tiếp tục. Show Trình ghi nhật ký đầu tiên và phổ biến nhất được gọi là
0. Đó là một giải pháp tốt và có khả năng tùy biến cao. Do nhiều hoàn cảnh khác nhau, quyết định này không bao giờ được JDK đưa ra, điều này khiến toàn bộ cộng đồng vô cùng khó chịu. Trình ghi nhật ký này không chỉ có khả năng ghi nhật ký, nó được các lập trình viên tạo ra dành cho các lập trình viên và cho phép họ giải quyết các vấn đề liên tục phát sinh liên quan đến việc ghi nhật ký. Như bạn đã biết, các bản ghi cuối cùng được viết để một số người đọc chúng và cố gắng hiểu điều gì đã xảy ra trong quá trình hoạt động của chương trình - điều gì và khi nào sai như mong đợi. Có
1ba điều cho việc này:
Đầu tiên, các cài đặt
1có thể được viết theo cách cho phép đăng nhập trong một gói và tắt nó trong một gói khác. Ví dụ: có thể kích hoạt đăng nhập trong
3, nhưng vô hiệu hóa nó trong
4. Điều này giúp có thể nhanh chóng xóa thông tin không cần thiết khỏi nhật ký. Thứ hai,
1nó cho phép ghi kết quả ghi nhật ký vào một số tệp nhật ký cùng một lúc. Và đầu ra cho từng cái có thể được cấu hình riêng lẻ. Ví dụ: trong một tệp, chỉ có thể ghi thông tin về các lỗi nghiêm trọng, trong tệp khác - nhật ký từ một mô-đun cụ thể và trong tệp thứ ba - nhật ký trong một thời gian nhất định. Do đó, mỗi tệp nhật ký được điều chỉnh theo một loại vấn đề dự kiến cụ thể. Điều này đơn giản hóa đáng kể cuộc sống của các lập trình viên, những người không thích xem qua các tệp nhật ký gigabyte theo cách thủ công. Và cuối cùng, thứ ba,
1nó cho phép thay đổi cài đặt nhật ký trực tiếp trong khi chương trình đang chạy mà không cần khởi động lại. Điều này rất hữu ích khi cần sửa công việc của nhật ký để tìm thêm thông tin về một lỗi cụ thể. Quan trọng! Có hai phiên bản nhật ký
1: 1.2.x và 2.xx , không tương thích với nhau . Bạn có thể kết nối bộ ghi với dự án bằng mã:
2.2 Trình ghi nhật ký chính thức đầu tiên - THÁNG 7: java.util.loggingSau khi sở thú các trình ghi nhật ký xuất hiện trong cộng đồng Java, các nhà phát triển
8đã quyết định tạo một trình ghi nhật ký tiêu chuẩn mà mọi người sẽ sử dụng. Đây là cách trình ghi nhật ký xuất hiện
9: gói
0. Tuy nhiên, trong quá trình phát triển, những người tạo ra trình ghi nhật ký không phải là cơ sở
1mà là một biến thể của trình ghi nhật ký của IBM, điều này đã ảnh hưởng đến sự phát triển của nó. Tin tốt là máy ghi
9được bao gồm
8, tin xấu là ít người sử dụng nó. Các nhà phát triển không chỉ
9tạo ra “một tiêu chuẩn chung khác” , mà họ còn tạo ra các cấp độ ghi nhật ký của riêng họ cho tiêu chuẩn đó, khác với các cấp độ được những người ghi nhật ký phổ biến chấp nhận vào thời điểm đó. Và đó là một vấn đề lớn. Rốt cuộc, các sản phẩm
5thường được thu thập từ một số lượng lớn thư viện và mỗi thư viện như vậy có bộ ghi riêng. Vì vậy, cần phải định cấu hình tất cả các trình ghi nhật ký trong ứng dụng. Mặc dù bản thân logger là khá tốt. Tạo một logger ít nhiều giống nhau. Để làm điều này, bạn cần nhập:
Tên lớp được thông qua đặc biệt để biết việc ghi nhật ký đến từ đâu. Chỉ với bản phát hành, các nhà phát triển đã giải quyết được các vấn đề quan trọng, sau đó nó
9thực sự thuận tiện khi sử dụng. Trước đó, nó là một loại máy ghi nhật ký hạng hai. Trình ghi nhật ký này cũng hỗ trợ các biểu thức lambda và đánh giá lười biếng. Bắt đầu với
7, bạn có thể vượt qua
8. Điều này giúp chỉ đọc và tạo chuỗi vào thời điểm thực sự cần thiết chứ không phải mọi lúc như trước đây. Các phương thức có đối số
9trông như thế này:
2.3 Trình bao bọc logger đầu tiên - JCL: jakarta commons loggingTrong một thời gian dài, không có một tiêu chuẩn duy nhất nào giữa những người ghi nhật ký, lẽ ra nó
9phải trở thành một, nhưng tệ hơn là
1, nên một tiêu chuẩn duy nhất không bao giờ xuất hiện. Nhưng cả một sở thú của những người khai thác gỗ đã xuất hiện, mỗi người đều muốn trở nên giống nhau. Tuy nhiên, các nhà phát triển Java thông thường không thích rằng hầu hết mọi thư viện đều có bộ ghi nhật ký riêng và cần được cấu hình theo một cách đặc biệt nào đó. Do đó, cộng đồng đã quyết định tạo một trình bao bọc đặc biệt đối với các trình ghi nhật ký khác - đây là cách
2 Và một lần nữa, dự án, được tạo ra để trở thành người dẫn đầu, đã không trở thành một. Bạn không thể tạo ra người chiến thắng, bạn chỉ có thể trở thành người chiến thắng. Chức năng
3rất kém và không ai muốn sử dụng nó. Máy ghi nhật ký, được thiết kế để thay thế tất cả các máy ghi nhật ký, cũng chịu chung số phận vì nó
9không được sử dụng. Mặc dù nó đã được thêm vào nhiều thư viện do cộng đồng Apache phát hành, vườn thú của những người ghi nhật ký chỉ ngày càng phát triển. 2.4 Trình ghi nhật ký cuối cùng đầu tiên - LogbackNhưng đó không phải là tất cả. Nhà phát triển
1đã quyết định rằng anh ta là người thông minh nhất (xét cho cùng, hầu hết mọi người đều sử dụng máy ghi nhật ký của anh ta) và quyết định viết một trình ghi nhật ký cải tiến mới có thể kết hợp các ưu điểm
1của các trình ghi nhật ký khác. Trình ghi nhật ký mới được gọi là
7. Máy ghi nhật ký này được cho là sẽ trở thành máy ghi nhật ký đơn trong tương lai mà mọi người sẽ sử dụng. Nó dựa trên cùng một ý tưởng như trong
1. Bạn có thể kết nối bộ ghi này với dự án bằng mã:
Sự khác biệt là ở
7:
Một ưu điểm khác của trình ghi nhật ký này là nó có các cài đặt mặc định rất tốt. Và bạn chỉ phải định cấu hình trình ghi nhật ký nếu bạn muốn thay đổi điều gì đó trong chúng. Ngoài ra, tệp cài đặt được điều chỉnh tốt hơn cho phần mềm của công ty - tất cả các cấu hình của nó được đặt thành
1. Theo mặc định,
7nó không yêu cầu bất kỳ cài đặt nào và ghi lại tất cả nhật ký từ cấp độ
3trở lên. Nếu bạn cần hành vi khác, nó có thể được cấu hình thông qua
4cấu hình:
2.5 Trình ghi nhật ký phổ quát mới nhất - SLF4J: Mặt tiền ghi nhật ký đơn giản cho JavaBao lâu mới có thể tìm được ý nghĩa vàng... Vào năm 2006, một trong những người sáng tạo
1đã rời dự án và quyết định thử lại để tạo một bộ ghi phổ quát. Nhưng lần này nó không phải là một bộ ghi mới, mà là một tiêu chuẩn phổ quát mới (trình bao bọc) cho phép các bộ ghi khác nhau tương tác với nhau. Trình ghi nhật ký này được gọi là
6, nó là một trình bao bọc xung quanh
1,
9,
9. Trình ghi nhật ký này đã giải quyết một vấn đề thực sự - quản lý một vườn thú ghi nhật ký, vì vậy mọi người ngay lập tức bắt đầu sử dụng nó. Chúng tôi anh dũng giải quyết các vấn đề mà chúng tôi tạo ra cho chính mình. Như bạn có thể thấy, tiến độ đã đạt đến mức chúng tôi đã tạo một trình bao bọc bên ngoài trình bao bọc ... Bản thân gói bao gồm hai phần:
Bạn có thể kết nối bộ ghi với dự án bằng mã:
Chỉ cần kết nối việc triển khai chính xác là đủ và thế là xong: toàn bộ dự án sẽ hoạt động với nó. 2.6 Tối ưu hóa trong slf4j
1hỗ trợ tất cả các tính năng mới như định dạng chuỗi để ghi nhật ký . Trước đây đã có một vấn đề như vậy. Giả sử bạn muốn in một thông báo vào nhật ký:
Có một vấn đề với mã này. Giả sử ứng dụng của bạn vẫn hoạt động
2và không ghi bất kỳ thứ gì vào nhật ký
3, tuy nhiên, phương thức này
4vẫn sẽ được gọi và khi nó được gọi, các phương thức sau cũng sẽ được gọi:
Gọi các phương thức này làm chậm ứng dụng. Cuộc gọi của họ chỉ cần thiết trong quá trình gỡ lỗi, nhưng dù sao thì họ cũng được gọi. Từ quan điểm logic, vấn đề này phải được giải quyết trong chính thư viện ghi nhật ký. Và trong phiên bản đầu tiên của log4j, giải pháp đã xuất hiện:
Thay vì một dòng nhật ký, bây giờ cần phải viết ba dòng. Điều này làm xấu đi đáng kể khả năng đọc mã và làm giảm mức độ phổ biến của
1. Trình ghi nhật ký
0đã có thể cải thiện một chút tình hình bằng cách cung cấp tính năng ghi nhật ký thông minh. Nó trông như thế này:
nơi
9biểu thị việc chèn các đối số được truyền trong phương thức. Tức là, cái đầu tiên
9tương ứng với người dùng, cái thứ hai
9tương ứng với
2. Các tham số này sẽ chỉ được nối vào một thông báo nếu cấp độ ghi nhật ký cho phép ghi nhật ký. Không hoàn hảo, nhưng tốt hơn tất cả các tùy chọn khác. Sau đó,
3nó bắt đầu trở nên phổ biến nhanh chóng, tại thời điểm này đây là giải pháp tốt nhất. |