2011-02-02 16 views
12

thể Duplicates:
Where/what level should logging code go?
Debug LevelsThông tin nào sẽ bao gồm ở mỗi cấp độ nhật ký?

Có một quy ước, một tiêu chuẩn, hoặc một hướng dẫn sử dụng rộng rãi mà sẽ giúp khai thác gỗ trong Java? Cụ thể, phải bao gồm những gì ở mỗi cấp (tiết, gỡ lỗi, ... v.v.) thay vì cơ chế ghi nhật ký thực tế.

Có nhiều hướng dẫn về những điều cần đưa vào ở mỗi cấp độ nhật ký, nhưng không có mục nào trong số đó là cụ thể; tất cả chúng đều mơ hồ, và điều này khiến cho việc "làm theo đơn hàng" trở nên khó khăn.

Mọi mẹo sẽ được đánh giá cao.

+0

Liên quan: [Nội dung gì khi đăng nhập khi ngoại lệ xảy ra?] (Http://stackoverflow.com/questions/2574709/what-to-log-when-an-exception-occurs) –

+0

@ Péter: Điều này có vẻ như câu hỏi khác nhau từ cả hai, nhưng liên quan chặt chẽ hơn đến câu hỏi thứ hai. –

Trả lời

11

Đó là tùy thuộc vào việc giải thích cá nhân, nhưng tôi là (theo thứ tự từ tốt nhất để coursest):

  • vết - Việc khai thác gỗ tốt nhất cấp độ. Có thể được sử dụng để ghi lại thông tin rất cụ thể chỉ có liên quan trong một tình huống gỡ lỗi thực sự, ví dụ: ghi nhật ký truy cập cơ sở dữ liệu hoặc mọi cuộc gọi HTTP, v.v.
  • Gỡ lỗi - Thông tin chính giúp bạn gỡ lỗi chương trình của mình. Ví dụ, đăng nhập mỗi lần một thói quen trộn đổ hàng loạt của nó hoặc một tập tin mới được tạo ra trên đĩa vv
  • Thông tin - dòng chảy ứng dụng chung, như "Bắt đầu từ ứng dụng", "kết nối với db", "đang đăng ký ...". Tóm lại, thông tin sẽ giúp bất kỳ người quan sát nào hiểu được ứng dụng đang làm gì nói chung.
  • Cảnh báo - Cảnh báo lỗi có thể được khôi phục. Chẳng hạn như không phân tích cú pháp một ngày hoặc sử dụng một thói quen không an toàn. Lưu ý rằng mặc dù chúng tôi vẫn cố gắng tuân theo nguyên tắc không nhanh và không ẩn, ví dụ: lỗi cấu hình khi sử dụng thông điệp cảnh báo, mặc dù chúng tôi có thể cung cấp giá trị mặc định cho ứng dụng.
  • Lỗi - Biểu thị lỗi thường không thể khôi phục. Chẳng hạn như không mở được kết nối cơ sở dữ liệu.
  • Gây tử vong/phê phán Được sử dụng để ghi lại lỗi mà ứng dụng không thể khôi phục, điều này có thể dẫn đến việc chấm dứt chương trình ngay lập tức.

Cuối cùng, tùy thuộc vào bạn để xác định điều gì phù hợp nhất với bạn. Cá nhân, tôi chạy hầu hết hệ thống sản xuất với mức độ đăng nhập Thông tin, nơi tôi chủ yếu quan tâm đến việc tuân theo logic chính của ứng dụng và tất nhiên bắt tất cả các cảnh báo/lỗi.

Ngoại trừ mã lộn xộn, không có nội dung nào như đăng nhập quá nhiều. Tất cả việc đăng nhập giúp bạn sao chép hoặc hiểu các vấn đề tốt hơn là ghi nhật ký tốt. Trên ghi chú hiệu suất, hầu hết các hệ thống ghi nhật ký (ví dụ: log4j) cho phép định cấu hình cấp độ nào thực sự gắn thêm vào nhật ký thực là một điều tuyệt vời.

+0

Bạn có khóa học và phạt sai đường tròn - dấu vết là tốt, lỗi là thô. –

+0

Được rồi, đã sửa. Cảm ơn bạn đã chỉ ra điều đó. –

0

Đối với những gì nó có giá trị, chúng tôi đang sử dụng các mức log sau: tin nhắn mức

  • DEBUG cho/hoặc thông tin được đánh giá cao chi tiết và cụ thể, chỉ hữu ích cho việc theo dõi các vấn đề.
  • Thông báo THÔNG TIN cung cấp thông tin chung về những gì hệ thống đang thực hiện. (ví dụ: xử lý tệp X)
  • CẢNH BÁO thông báo cảnh báo người dùng về những điều không lý tưởng nhưng không ảnh hưởng đến hệ thống. (ví dụ: cấu hình X bị mất, sử dụng giá trị mặc định)
  • Thông báo L informI thông báo cho người dùng rằng đã xảy ra sự cố nhưng hệ thống sẽ có thể đối phó. (ví dụ: kết nối bị mất, nhưng sẽ thử lại)
  • Thông báo CRITICAL thông báo cho người dùng khi xảy ra lỗi không thể khôi phục. (tức là tôi sắp hủy bỏ nhiệm vụ hoặc sự cố hiện tại)

Tôi nghĩ điều quan trọng nhất với mức nhật ký là tìm ra một sơ đồ, ghi lại và gắn bó với nó. Mặc dù việc tạo mức nhật ký nhất quán giữa các chương trình sẽ tốt đẹp, miễn là bạn đã sử dụng ý thức chung trong việc xác định cấp độ nhật ký của mình, người dùng sẽ chịu đựng một số lượng chênh lệch nhất định giữa các chương trình.

0

Nhật ký đơn giản những gì bạn nghĩ là quan trọng nếu bạn quay lại sau và cần đọc nhật ký. Điều này tất nhiên có nghĩa là Object.toStrings của bạn bây giờ cần phải được tốt đẹp và dễ đọc và không phải là một bãi của crap thats không thể đọc. Điều này cũng có nghĩa là bạn cần phải làm những điều hợp lý như chuỗi trích dẫn vv ..

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