Tôi đang viết một thư viện tập hợp các chức năng khác nhau mà tôi sẽ sử dụng trong các ứng dụng khác nhau. Tôi muốn nó tạo ra các câu lệnh log hiển thị cho người dùng của thư viện, tức là, nếu tôi đang xây dựng một ứng dụng và tôi đang sử dụng thư viện, tôi muốn thư viện tạo các câu lệnh tường trình hiển thị cho tôi. Làm thế nào để làm điều đó? Vì tệp nhật ký sẽ được cấu hình bởi nhà phát triển ứng dụng, thư viện của tôi sẽ biết cách đăng nhập như thế nào?Trình ghi nhật ký cho thư viện Java
Trả lời
Nếu bạn đang phát triển một thư viện những người khác sẽ bao gồm trong ứng dụng của họ, bạn nên sử dụng một đăng nhập mặt tiền. Nếu không, bạn buộc người dùng thư viện của mình định cấu hình và bao gồm khung đăng nhập bạn đã chọn ngoài khung họ đã chọn cho đơn đăng ký của họ.
Ví dụ nếu bạn sử dụng log4j nhưng nhà phát triển sử dụng thư viện của bạn sử dụng logback ông sẽ phải bao gồm một tập tin cấu hình log4j và jar log4j (hoặc mất other measures) để làm cho thư viện của bạn hạnh phúc.
Mặt tiền Logging giải quyết vấn đề này (từ Apache Commons Logging):
Khi viết một thư viện nó rất hữu ích để ghi lại thông tin. Tuy nhiên có nhiều triển khai ghi nhật ký ngoài đó và một thư viện không thể áp dụng việc sử dụng một ứng dụng cụ thể trên ứng dụng tổng thể mà thư viện là một phần của.
Gói ghi nhật ký là một cầu nối siêu mỏng giữa các triển khai ghi nhật ký khác nhau. Một thư viện sử dụng API ghi nhật ký có thể được sử dụng với bất kỳ triển khai ghi nhật ký nào khi chạy. Commons-logging đi kèm với sự hỗ trợ cho một số triển khai ghi nhật ký phổ biến và việc viết các bộ điều hợp cho người khác là một nhiệm vụ đơn giản hợp lý.
Hoặc lập luận từ SLF4J:
Các Logging mặt tiền đơn giản cho Java hay (SLF4J) đóng vai trò như một mặt tiền đơn giản hay trừu tượng cho các khuôn khổ khai thác gỗ khác nhau, ví dụ java.util.logging, log4j và logback, cho phép người dùng cuối cắm vào khung khai thác mong muốn tại thời điểm triển khai.
Các ứng cử viên cho mặt tiền ghi là:
Ví dụ của bạn là gây hiểu lầm. Nhà phát triển có thể sử dụng API SLF4J cho bộ mã và bộ chuyển đổi log4j cho bên thứ ba cùng một lúc. Sau đó, anh ta chỉ chọn một số phụ trợ SLF4J như logback. Trong thực tế đây là một lý do cho SLF4J, nó rất đơn giản. Không cần cấu hình log4j. –
@RostislavMatl Bạn đang nói về SLF4J "mô-đun cầu nối" (http://www.slf4j.org/legacy.html)? Chúng cho phép bạn sử dụng một thư viện sử dụng log4j, ... nội bộ và chuyển hướng các thông điệp tường trình của nó tới SLF4J (có thể được hỗ trợ bởi logback). Đây chắc chắn là một tính năng tuyệt vời nếu bạn là NGƯỜI DÙNG của một thư viện. Tuy nhiên, khi bạn là người phát triển của một thư viện, tại sao bạn buộc người dùng phải nhảy qua các vòng lặp như vậy? Tại sao không sử dụng mặt tiền trực tiếp? Khi trang SLF4J tuyên bố các giải pháp này là "thích hợp cho phần mềm ngoài tầm kiểm soát của bạn". Xin vui lòng sửa tôi nếu tôi đã hiểu lầm bạn. – Joe23
Dường như chúng ta nói về những thứ khác nhau. Bạn đã viết: "nếu bạn sử dụng log4j nhưng nhà phát triển sử dụng thư viện của bạn sử dụng logback anh ta sẽ phải bao gồm một cấu hình log4j" - đó không phải là sự thật. Và đó là một giải pháp tồi tệ cùng một lúc. Tôi không nói là bạn không thể sử dụng SLF4J khi phát triển mã mới. Tôi đã chọn điểm hoặc điểm người dùng thư viện vì bạn sẽ thường xuyên hơn người dùng, sau đó là người tạo. –
Các giải pháp tiêu chuẩn cho điều này là:
- Log4J: http://logging.apache.org/log4j/
- SLF4J: http://www.slf4j.org/
- JDK Built-in Logger: https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html
Tất cả trong số họ sẽ cho phép bạn cấu hình vị trí tệp nhật ký thông qua cấu hình.
- 1. Ghi nhật ký thư viện cho Erlang/OTP
- 2. Thư viện ghi nhật ký C
- 3. Thư viện ghi nhật ký tốt hơn cho C++
- 4. Ghi nhật ký Java - cách chuyển hướng đầu ra sang tệp nhật ký tùy chỉnh cho trình ghi nhật ký?
- 5. Thư viện ghi nhật ký nào tốt hơn?
- 6. Ghi nhật ký thư từ C++ sang Java
- 7. Thư viện doanh nghiệp: Ghi nhật ký khối và email
- 8. Trải nghiệm sử dụng thư viện ghi nhật ký Boost.Log?
- 9. Ghi nhật ký Java vs Log4J
- 10. Có thư viện ghi nhật ký không đồng bộ cho Ruby không?
- 11. Ghi nhật ký Tomcat của Azure Java
- 12. Trình ghi nhật ký gốc của Python lưu trữ nhật ký ở đâu?
- 13. Cách tắt ghi nhật ký log4j từ mã Java
- 14. C++ thiết kế trình bao bọc ghi nhật ký
- 15. Thư viện trình duyệt Java
- 16. Tắt ghi nhật ký Hibernate
- 17. Tôi có thể tắt tiêu đề nhật ký cho trình ghi nhật ký ruby không?
- 18. Định cấu hình ghi nhật ký cho trình điều khiển Java MongoDB
- 19. Các chiến lược để ghi nhật ký ứng dụng từ mã thư viện?
- 20. Triển khai Thư viện nguồn mở: Cách xử lý ghi nhật ký?
- 21. phân cấp ghi nhật ký so với trình ghi nhật ký gốc?
- 22. Lỗi ghi nhật ký có lập trình Với Elmah: Ghi nhật ký thông tin cụ thể
- 23. Thêm hỗ trợ ghi nhật ký chung trong thư viện được chia sẻ C++
- 24. Ghi nhật ký Python.DEBUG không ghi nhật ký
- 25. Cách triển khai ghi nhật ký thành ngữ trong thư viện Go?
- 26. Ứng dụng Ghi nhật ký Thư viện Doanh nghiệp Microsoft 5.0 có an toàn không?
- 27. Thư viện SSH cho Java
- 28. Thư viện UPnP cho Java
- 29. Thư viện WebP cho java?
- 30. thư viện java cho zip64
Xem nhanh khung công tác Spring. Cụ thể, khả năng Dependency Injection là phần hữu ích nhất đối với bạn. – cdeszaq