[CommonLogging] API chuẩn cho logging

Common logging là gì? Tại sao chúng ta nên dùng common logging khi phát triển phần mềm? Trong bài viết này tôi sẽ chia sẻ và trả lời những câu hỏi trên.


Khi đã là một developer, ắc hẳn chúng ta sẽ hiểu log có tầm quan trọng như thế nào khi những dòng code của chúng ta “run” nhưng không đem về kết quả mong muốn hay tệ hơn là gây hậu quả nghiêm trọng. Log cho ta biết những dòng code của chúng ta đang làm gì và có thể gặp vấn đề gì.

Common logging là gì?

Common logging là gì?

Chúng ta có khá nhiều bộ thư viện nguồn mở để thiết lập một hệ thống logging cho system của mình như log4net, log4j hay Nlog…

Vậy ta nghe nói đến Common.logging, vậy nó có được xếp trong bộ thư viện kể trên? Dĩ nhiên là có thể xếp nó vào bộ thư viện kể trên nhưng không hoàn toàn đúng như vậy.

Common.Logging ra đời như một bộ API chuẩn cho logging và với những nền tảng hay framework khác nhau nó cũng có những biến thể nhất định như log4net và log4j.

Install-Package Common.Logging

Tại sao lại là một bộ API chuẩn? Như chúng ta đã biết, nếu phát triển trên nền tảng .NET chúng ta có những bộ thư viện khá mạnh như log4net hay Nlog. Và chúng ta sẽ phải đắn đo để xem xét nên chọn thư viện logging nào cho ứng dụng của mình(xét về tốc độ, về cách cấu hình, cơ chế, tính đa nền tảng, khả năng centralization logging…). Khi đó chúng ta sẽ gặp những vấn đề sau đây:

  1. Nếu bạn không có kinh nghiệm đánh giá các bộ thư viện logging thì bạn sẽ mất đi một ít time cho việc đánh giá chúng trước khi có thể bắt đầu coding.
  2. Nếu bạn không có kinh nghiệm đánh giá về khả năng đáp ứng nhu cầu của bạn từ các bộ thư viện kia, và bạn chọn đại một bộ thư viện, rất có thể bạn sẽ phải thay đổi thư viện logging đó khi mà bạn phát hiện ra nó không đáp ứng được cái bạn đang cần mà trước kia chưa thấy – cái mà bạn đã chọn ngay từ đầu và giờ phá bỏ. Việc thay đổi thư viện logging đồng nghĩa với việc bạn sẽ phải kiểm tra từng dòng log để refactor namespace, logging  APIs… Bạn đang đối đầu với chi phí refactor code.
  3. Nếu bạn đã có kinh nghiệm trước đó và bạn chọn một bộ thư viện logging mà bạn hài lòng thì chưa chắc trong tương lai cái mà bạn chọn sẽ còn phù hợp với nhu cầu trong tương lai. Khi đó bạn lại phải tốn chi phi refactor code như đã nói trên.

Tóm lại, Common.logging giải quyết được vấn đề gì? Như trên đã phân tích, mọi vấn đề đều đi đến một kết quả đó là phải refactor code khi cần thay đổi thư viện logging. Common.Logging giải quyết được vấn đề này. Nghĩa là Common.Logging cung cấp cho bạn một bộ APIs chuẩn cho việc logging khi code, bạn sẽ không cần quan tâm đến việc sẽ sử dụng bộ thư viện logging nào hiệu quả để log. Từ đó việc logging của Dev trở nên dễ dàng hơn. Đến khi thật sự cần log ra file hay một dạng nào khác chúng ta mới cần quan tâm đến bộ thư việc log4net hay Nlog là tốt. Khi đó chúng ta sẽ dùng Common.Logging adapter để chuyển từ Common.Logging APIs qua log4net hay Nlog mà thôi. Việc cấu hình adapter khá đơn giản và chỉ cần cấu hình tại app.config của ứng dụng, không phải tất cả các libraries project.

Common.Logging là gì?

Common.Logging là gì?

Ví dụ: tôi có các projects như sau: ProduceMgrProduceMgr.ExtentedProduceMgr.Utilites. Tất cả đều là library project và tôi dùng Comom.Logging tại các project này. Sau đó tôi có project ProduceMgr.GUI, đây là một Console project. Khi đó tôi quyết định dùng log4net, tôi chỉ việc thêm cấu hình cho log4net và cấu hình cho Common.Logging để chuyển Common.Logging qua log4net. Một thời gian sau tôi lại chuyển qua Nlog vì nó tốt hơn, tôi chỉ việc thay đổi cấu hình tại project ProduceMgr.GUI mà thôi. Nếu không có Common.Logging tôi sẽ phải đi refactor lại code ở toàn bộ các projects trên.

Các bạn có thể tải về source code bênh dưới để tìm hiểu thêm về cách dùng Common.Logging cũng như các Adapter của nó.

Download

Để hiểu hơn về log4net, hãy xem một bài viết khác của tôi tại đây.

Phạm Tuân

Mono.Cecil là gì - Cách truy xuất thông tin Assembly
Cấu hình log4net và logging.adapter trong code c#
WPF - Biến Grid Thành Slide Navigation Menu