2009-04-23 27 views
27

Tôi mới bắt đầu sử dụng Log4Net và đang tìm kiếm những gì bạn thấy hữu ích trong trải nghiệm đăng nhập của mình.Log4net/Logging - Bạn thấy điều gì hữu ích?

Những loại nội dung nào bạn thấy hữu ích khi đăng nhập; những gì cuối cùng chỉ là tiếng ồn; khi nào bạn sử dụng các mức ghi khác nhau (DEBUG, INFO, v.v.); bạn có định dạng chuẩn cho mỗi mục nhập nhật ký hay không; có những điều bạn luôn luôn đăng nhập?

Bất kỳ cạm bẫy nào? Các bài viết hay về đăng nhập nói chung?

Cập nhật: Bạn đăng nhập vào đâu? Người phụ trách và lý do gì?

Cảm ơn bạn!

+0

Điều này có lẽ nên là cộng đồng wiki. – DevinB

Trả lời

20

Tôi dựa phản ứng của tôi trên phản ứng tuyệt vời của Robert Kozak, mặc dù tôi hoàn toàn không sử dụng đăng nhập của tôi theo cùng một cách

tôi sử dụng năm loại báo cáo nhật ký:

  • DEBUG
  • INFO
  • CẢNH BÁO
  • LỖI
  • Fatal

DEBUG báo cáo là báo cáo mà rất hữu ích khi bạn vẫn đang viết một ứng dụng, và khi bạn cần có một sự hiểu biết đầy đủ về những/nơi dòng chảy thực hiện của bạn. Bạn có thể sử dụng các câu lệnh DEBUG để đo hàng đợi trước một khóa, hoặc kiểm tra tên người dùng của người dùng đăng nhập, hoặc thậm chí các tham số cho một cuộc gọi SQL nào đó đang gây rắc rối. DEBUG dành cho các câu nói chung không cần thiết để được biết.

INFO nên được sử dụng bất cứ khi nào có thông tin sẽ rất hữu ích nếu xảy ra sự cố, nhưng không cho biết có điều gì đó không ổn. Nếu bạn sử dụng quá nhiều câu lệnh INFO, nhật ký của bạn sẽ trở nên cồng kềnh và bất tiện, vì vậy hãy cẩn thận. Sử dụng INFO cho bất kỳ thông tin quan trọng nào mà bạn sẽ cần về lỗi và không có nơi gần nơi xảy ra lỗi.

Sử dụng Mức WARN nếu bạn phát hiện có thể khôi phục nhưng vẫn không mong đợi (ít nhất là một chút mong đợi, vì bạn đã bắt được). Nó chỉ ra rằng ứng dụng của bạn CÓ THỂ ở trạng thái không hoạt động được, nhưng bạn tin rằng bạn có thể phục hồi/tiếp tục trên đường dẫn hiện hành.

ERROR cảnh báo là bất cứ khi nào bạn gặp ngoại lệ không mong muốn. Nếu bạn đang khôi phục/thử lại phương thức hiện tại, tôi khuyên bạn nên sử dụng WARN. Nếu bạn đang hủy/bailing ra, sử dụng ERROR. Ngay cả khi chương trình của bạn có thể tiếp tục, ERROR có nghĩa là bạn đang cố gắng làm điều gì đó và bị từ chối, và do đó chuyển sang những thứ khác.

Fatal là để sử dụng khi bạn bắt một cái gì đó ở một mức độ xa bên dưới nơi nó được ném ra, và bạn về cơ bản không có ý tưởng những gì đang xảy ra. Nó có nghĩa là bạn thậm chí không cố gắng để tiếp tục thực hiện, bạn chỉ đơn giản là sẽ đăng nhập mọi thông tin có thể theo ý của bạn và sau đó cố gắng thoát ra một cách duyên dáng. Lỗi FATAL không thường xuyên được sử dụng vì thường nếu bạn gặp lỗi, bạn có đủ thông tin để thử và tiếp tục thực hiện. Nhưng trong các tình huống mà tham nhũng có thể xảy ra nếu bạn cố gắng và tiếp tục, hãy đăng nhập một lỗi FATAL, và sau đó chạy đi.


Đối với nơi bạn đang đăng nhập.Tôi thường muốn đăng nhập vào thư mục 'được chia sẻ' trên máy chủ ứng dụng của mình (hãy cẩn thận về việc cho phép để chúng không công khai) để nhật ký rất dễ truy cập và chúng luôn là bước đầu tiên của tôi để gỡ lỗi. Nếu có thể, hãy thiết lập để bất kỳ lỗi nào CẢNH BÁO, L ERI, hoặc CHẤT LƯỢNG được gửi qua email để bạn có cảnh báo 'nâng cao'.

Cheers

2
  • Tất cả các trường hợp ngoại lệ được ghi lại ở ERROR mức ở mức cao nhất trong các cuộc gọi stack đó là có thể (thường là trong xử lý sự kiện vv)
  • tài đầu vào mà gây ra một vấn đề được ghi lại ở WARN mức (vì nó có thể chỉ ra chúng tôi cần cải thiện giao diện người dùng của mình để hướng dẫn người dùng tốt hơn)
  • Hoạt động "đáng kể" được ghi lại ở mức INFO (nghĩa là mọi thứ liên quan đến thanh toán thẻ tín dụng của khách hàng, truy vấn API của bên thứ ba v.v.), bao gồm dữ liệu liên quan (thường được tuần tự hóa XML, với bất kỳ thông tin nhạy cảm nào bị xóa)
  • Hoạt động rất tiết có thể được ghi lại tại DEBUG cấp

Chúng tôi hiếm khi sử dụng ghi nhật ký mức FATAL.

Chúng tôi thường triển khai với mức RollingLogFileAppender ở mức INFO và mức SmtpAppender ở mức ERROR.

1

tôi sử dụng bốn loại báo cáo nhật ký:

  • DEBUG
  • INFO
  • CẢNH BÁO
  • LỖI

tôi sử dụng DEBUG cho báo cáo tôi muốn kiểm tra trong một phiên gỡ rối . Thông thường, những điều này không kéo dài đến Bản phát hành bản phát hành. Đây là nơi tôi đang kiểm tra giá trị của một biến hoặc đăng nhập vào và ra khỏi một phương thức.

Tôi sử dụng INFO cho chuỗi kết nối, cấu hình và các bit thông tin chung mà tôi luôn muốn xem trong nhật ký.

CẢNH BÁO được sử dụng hiếm khi cho những điều tôi không chắc chắn hoặc các điều kiện lỗi tiềm ẩn hoặc thậm chí có thể kiểm tra ngoại lệ mà tôi biết sẽ được xử lý.

Tôi thường chỉ sử dụng ERROR trong khối catch để báo cáo về ngoại lệ và trong ExceptionHandler được gọi khi không có phương thức nào khác xử lý ngoại lệ.

2

Log4Net với Apache Chainsaw. Cưa là một bảng điều khiển để xem thông điệp tường trình của bạn từ thời gian thực. Nó có thể xử lý nhiều ứng dụng, thực hiện lọc trực tuyến và một số tính năng tiện dụng khác.

Nếu nghi ngờ, hãy ghi lại (tốt nhất là ở mức cao hơn như DEBUG hoặc INFO hoặc tạo cấp độ của riêng bạn). Bạn có thể cấu hình những gì được sản lượng trong tập tin cấu hình.

0

Tôi đã thấy rằng tôi có được dữ liệu có giá trị bằng cách thiết lập các dự án sử dụng Log4PostSharp vào lúc bắt đầu của sự phát triển. Về cơ bản, kết hợp với động cơ PostSharp, bạn có thể đặt một thuộc tính trên các phương thức và nó sẽ ghi lại tất cả các cuộc gọi với tham số và giá trị trả lại. Tôi thiết lập nó ở mức Debug trong tệp Assembly.cs để nó mặc định ghi nhật ký tất cả các cuộc gọi phương thức không phải là getters hoặc setters thuộc tính.

Nếu không kiểm soát được, nó có thể tạo ra một lượng lớn dữ liệu (tôi đảm bảo rằng tôi không đăng nhập bất kỳ thứ gì khác ở cấp độ gỡ lỗi để dễ dàng bật và tắt nó. một vấn đề) nhưng với trình xem nhật ký tốt - tôi sử dụng BareTail - bạn có thể xác định các lỗi phức tạp rất nhanh chóng. Nó đặc biệt tốt trong việc xác định phương pháp tất cả các chủ đề khác nhau của bạn đã được tại điểm một vấn đề phát sinh.

Tôi sử dụng một trình bổ sung tập tin để dữ liệu gần đây nhất luôn có sẵn mà không cần tệp có kích thước vô lý.

2

Còn có một khung ghi nhật ký khác cho ASP.NET được gọi là ELMAH. Mặc dù nó không phải là một khung khai thác gỗ thực sự, nhưng nhiều hơn một khuôn khổ ngoại lệ.

tính năng mát bao gồm:

  • 0 mã/biên dịch lại để thực hiện nó
  • có một giao diện người dùng web để xem các lỗi
  • RSS feed cho các lỗi
  • có thể cấu hình nó để đổ lỗi cho SQL
0

Có một trình xem nhật ký log4net khác (ngoài Apache Chainsaw) mà công ty của tôi đã sử dụng trong một thời gian, d "log4net Bảng điều khiển" và đang được phát triển bởi một công ty Na Uy (tôi nghĩ) được gọi là FaktNet, trang web của nó là http://www.l4ndash.com.

Nó cung cấp một bảng điều khiển dựa trên web khá trực quan và cung cấp một tổng quan tốt về nhật ký, có thể được sử dụng với nhiều ứng dụng khác nhau (chẳng hạn như tệp cuộn hoặc trình bổ sung máy chủ SQL) nhưng không miễn phí như Apache Cưa là. Tuy nhiên, họ có giấy phép của nhà phát triển, miễn phí và chỉ cho phép sử dụng cục bộ, ví dụ như một freelancer muốn theo dõi các trang web của mình (một bảng điều khiển l4n duy nhất có thể kết nối với nhiều nguồn đăng nhập).

FaktNet có nhiều giấy phép khác nhau, tùy thuộc vào số lượng người dùng có thể truy cập trang tổng quan và giấy phép Doanh nghiệp của họ không thực sự đắt (tôi nghĩ là 600 đô la). Với khả năng truy cập nhiều bản ghi, nó có thể là một tài sản lớn cho một nhóm phát triển đang phát triển và theo dõi nhiều trang web có quy mô trung bình đến lớn.

0

Trình bổ sung thực sự hữu ích khác là DBAppender có thể ghi nhật ký thông tin trong Cơ sở dữ liệu, điều này cực kỳ hữu ích để truy vấn nhật ký.

Thông tin thêm về điều này trong this article.

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