2009-08-11 50 views
32

Tôi đang tìm hiểu cách thực hiện đăng nhập vào ứng dụng C# của mình - thư viện lớp DLL của nó. Khung công tác khai thác gỗ nào được sử dụng rộng rãi nhất - điều gì sẽ mang lại cho người dùng DLL của tôi sự linh hoạt và cấu hình nhất? Có tương đương C# của log4j không?Khung khai thác được sử dụng rộng rãi nhất trong C# là gì?

+1

Tôi sẽ cung cấp cho ReflectInsight một thử http: // http: //insightextensions.codeplex.com/ – code5

+0

Có danh sách các khung đăng nhập tại đây: https://github.com/quozd/awesome-dotnet/blob /master/README.md#logging –

Trả lời

29

Tương đương với log4j cho nền tảng .NET là log4net và tôi đoán nó được sử dụng rộng rãi.


chỉnh sửa (không phải do tác giả): Trong trường hợp bạn không muốn sử dụng log4net, đây là một loạt các lựa chọn thay thế từ https://github.com/quozd/awesome-dotnet/blob/master/README.md#logging:

  • Essential Diagnostics - Mở rộng các tính năng sẵn có của Không gian tên System.Diagnostics để cung cấp khả năng ghi linh hoạt
  • NLog - NLog - Advanced .NET và Silverlight logging
  • Logazmic - Mã nguồn mở NLo g xem cho Windows
  • ELMAH - Official ELMAH trang web
  • Elmah MVC - ELMAH cho MVC
  • Logary - Logary là một hiệu suất cao, đa mục tiêu khai thác gỗ, số liệu, truy tìm và kiểm tra sức khoẻ cho thư viện Mono và .NET. Câu trả lời của .NET cho DropWizard. Hỗ trợ nhiều mục tiêu, được xây dựng cho các dịch vụ vi mô.
  • Log4Net - Thư viện log4net Apache là một công cụ để giúp những điều khoản đăng nhập đầu ra lập trình viên với một loạt các mục tiêu sản lượng
  • Serilog - Một no-nonsense thư viện khai thác gỗ cho kỷ nguyên NoSQL. Kết hợp khai thác chẩn đoán truyền thống và cấu trúc tốt nhất trong một gói dễ sử dụng.
  • StackExchange.Exceptional - Lỗi xử lý sử dụng cho mạng stack Trao đổi
  • Semantic Logging Application Block (SLAB) - Mở rộng các tính năng sẵn có của System.Diagnostics.Tracing namespace (lớp EventSource) để đăng nhập vào một số bồn bao gồm Bàn Azure, cơ sở dữ liệu, các file (JSON, XML, bản văn). Hỗ trợ ghi nhật ký trong quá trình và ngoài quy trình thông qua ETW và Rx để lọc/tổng hợp các sự kiện trong thời gian thực.
  • Foundatio - API ghi nhật ký thông thạo có thể được sử dụng để ghi nhật ký thông báo trong suốt ứng dụng của bạn.
  • Exceptionless - Ứng dụng .NET ngoại lệ
  • Loupe - Ghi nhật ký và tập trung .NET. [Quyền sở hữu][Cấp miễn phí]
  • elmah.io - Ghi nhật ký đám mây cho ứng dụng web .NET bằng ELMAH. Tìm lỗi trước khi bạn phát trực tiếp. Tìm kiếm mạnh mẽ, API, tích hợp với Slack, GitHub, Visual Studio và hơn thế nữa. [Free for OSS][$]
  • BugSnag - Nhật ký lỗi. Bao gồm thông tin chẩn đoán hữu ích như ngăn xếp theo dõi, phiên, phát hành, v.v. Có một cấp miễn phí. [Miễn phí cho OSS] [$]
+2

Tôi sử dụng log4net trong hầu hết các ứng dụng .NET của mình. Tuy nhiên, các lớp học của tôi không giữ một tham chiếu đến log4net trực tiếp, tôi ẩn mối quan tâm cơ sở hạ tầng này đằng sau một giao diện và sử dụng tiêm phụ thuộc. – JohnRudolfLewis

+0

Chúng tôi cũng đang sử dụng log4net. Nó thật tuyệt. Cực kỳ linh hoạt, cực kỳ nhanh. –

+0

sử dụng log4net và không bao giờ nhìn lại ... Không SO sử dụng log4net? –

5

Đã sử dụng NLog thành công trong nhiều dự án.

1

Tôi đang sử dụng NLog từ nhiều năm với thành công và dự án được thực hiện rất tốt.

3

Chúng tôi sử dụng các lớp ghi nhật ký của riêng chúng tôi, được triển khai bằng cách gọi log4net. Điều này cho phép chúng ta tận dụng khung công tác linh hoạt và được sử dụng rộng rãi này trong khi tránh hàng nghìn tham chiếu trực tiếp đến nó trong mã nguồn.

-1

Mọi người đã sử dụng Thư viện doanh nghiệp rộng rãi. Nhưng có thể các nhà phát triển đang chuyển sang các sản phẩm khác trong những ngày này.

Tôi sẽ kiểm tra xem nó có chức năng cần thiết mà bạn cần và không quá nhiều sưng lên.

2

Enterprise Library. Thật mạnh mẽ và xuất phát trực tiếp từ Microsoft với tất cả các phương pháp hay nhất của họ. Chúng tôi sử dụng nó trong tất cả các dự án của chúng tôi. Nó rất linh hoạt và có một công cụ giao diện người dùng mà bạn có thể sử dụng trong trường hợp bạn không muốn gây rối với việc quản lý việc ghi nhật ký từ tệp cấu hình.

+1

Downvoting vì Enterprise Library không mạnh mẽ. Nó là chậm, thêm chi phí vô lý, và API là không lớn, một trong hai. –

+0

@ John bất kể ý kiến ​​của bạn về thư viện doanh nghiệp, nó vẫn có thể được sử dụng rộng rãi nhất (có lẽ vì nó trực tiếp đến từ Microsoft) và cung cấp tính linh hoạt và cấu hình cần thiết theo câu hỏi. Tôi tin rằng đó là một câu trả lời hoàn toàn hợp lệ cho câu hỏi. – desigeek

+0

Điều gì làm cho nó được sử dụng rộng rãi? EntLib.Logging có 280 nghìn lượt tải xuống (https://www.nuget.org/packages/EnterpriseLibrary.Logging/) trên NuGet so với 2.6M cho log4net (https://www.nuget.org/packages/log4net/). Trong thực tế NLog có 1.5M và Serilog có 130K.Phản đối chính của tôi là bạn gọi nó là Mạnh mẽ. Tất cả các đội tôi đã làm việc với hối hận khi sử dụng nó. Bằng cách này, "nó là chậm và thêm chi phí vô lý" là không một ý kiến. –

3

log4net gần như chắc chắn là phổ biến nhất.

Nhưng tôi sử dụng Common.Logging - http://netcommon.sourceforge.net/ vì nó mang lại cho tôi sự linh hoạt

Có rất nhiều cách đăng nhập triển khai cho .NET hiện trong sử dụng, log4net, Thư viện Enterprise Logging, NLog, để tên nhiều nhất là phổ biến. Nhược điểm của việc thực hiện khác nhau là họ không chia sẻ một giao diện chung và do đó áp đặt một triển khai đăng nhập cụ thể cho người dùng của thư viện của bạn.

Common.Logging thư viện giới thiệu một trừu tượng đơn giản để cho phép bạn chọn ghi nhật ký cụ thể triển khai khi chạy. Do đó, bạn có thể hoãn quyết định thư viện khai thác cụ thể nào để sử dụng cho đến khi triển khai . Bộ điều hợp được sử dụng để cắm một hệ thống ghi nhật ký cụ thể vào Common.Logging.

+0

Lợi ích của việc hoãn quyết định là gì? – BKSpurgeon

+1

Ồ, đây là hơn 8 tuổi. Như Common.Logging nói (và vẫn làm), bạn có thể trì hoãn quyết định của bạn cho đến khi triển khai. Ví dụ; Có thể bạn muốn gắn nhãn cho hệ thống của mình? Và devops cho công ty muốn lưu trữ nó thích Enterprise Library Logging, trong khi một devops team thích log4net hơn. – gef

+0

Tôi quan tâm đến việc sử dụng Common.Logging (cảm ơn mẹo, BTW), nhưng tôi rất mệt mỏi với chi phí hoạt động phát sinh bởi độ phân giải lớp/thời gian chạy trừu tượng. Bạn có lẽ biết về bất kỳ điểm chuẩn liên quan đến điều này? –

Các vấn đề liên quan