2015-08-18 20 views
9

Tôi muốn hiểu các khái niệm cơ bản về thư viện ghi nhật ký.Ý nghĩa và mục đích của thư viện khai thác gỗ là gì?

  1. Mục đích của thư viện khai thác chính xác là gì? Tôi hiểu rằng nhật ký về cơ bản là thông tin về quy trình đăng ký của bạn trong quá trình thực thi. Một cách để làm điều đó là viết thông tin trực tiếp vào một tập tin.
  2. Mục đích của việc thiết kế một thư viện chuyên dụng như glog cho mục đích ghi nhật ký là gì? Sự hiểu biết của tôi về việc ghi nhật ký chính xác hay tôi cần thay đổi nó? Ai đó có thể đưa ra một ví dụ thực tế để thể hiện tầm quan trọng của việc sử dụng thư viện khai thác gỗ?
  3. Bạn nên xem những tính năng nào trong khi chọn thư viện ghi nhật ký?
  4. Cách đăng nhập có thể được sử dụng hiệu quả trong quá trình triển khai?
+3

Ghi nhật ký: là bất kỳ điều gì hữu ích làm giảm cảm giác đau trong các phiên gỡ lỗi 3 giờ sáng. Sử dụng một thư viện chuẩn cho phép bạn khai thác tiền lệ và lựa chọn thiết kế được thực hiện bởi các tác giả có kinh nghiệm. – Bathsheba

+2

Viết dữ liệu có cấu trúc phù hợp, có khả năng chịu lỗi với một mục tiêu duy nhất trong một chủ đề an toàn bằng cách sử dụng hiệu quả io ... –

+0

Đối với người mới bắt đầu, sẽ hữu ích nếu có câu trả lời chi tiết hơn hoặc ít nhất một liên kết giải thích vấn đề thông suốt. –

Trả lời

12

Thông tin ghi nhật ký trong khi thực hiện ứng dụng của bạn có thể giúp bạn hiểu điều gì đã dẫn đến lỗi hoặc sự cố, mang lại cho bạn nhiều ngữ cảnh hơn. Điều này đặc biệt quan trọng khi bạn nhận được báo cáo lỗi hoặc báo cáo sự cố từ những người không phải là nhà phát triển và không chạy dưới trình gỡ lỗi, người dùng cuối/khách hàng hoặc người không phát triển trong nhóm của bạn.

Nền của tôi có trong trò chơi và việc ghi nhật ký có thể đặc biệt có giá trị với trò chơi vì một vài lý do. Một là nhiều vấn đề có thể liên quan đến các chi tiết cụ thể của phần cứng trên một hệ thống để ghi lại thông tin như loại GPU mà người dùng có, phiên bản trình điều khiển đồ họa nào đang chạy, v.v ... có thể cần thiết để gỡ lỗi các vấn đề chỉ hiển thị trên cấu hình cụ thể. Khác là trò chơi có một khía cạnh mô phỏng, nơi trạng thái của trò chơi đang phát triển theo thời gian để đáp ứng với đầu vào của người dùng kết hợp với mô phỏng những thứ như vật lý, AI và quy tắc trò chơi. Hiểu được những gì đang xảy ra trong khi chạy đến một sự cố hoặc lỗi sẽ giúp tìm ra cách tái sản xuất và có thể đưa ra những manh mối có giá trị cho nguyên nhân gốc rễ của vấn đề.

Thư viện ghi nhật ký thêm chức năng hữu ích cho việc ghi nhật ký và vượt ra ngoài những gì có sẵn từ một printf đơn giản. Điều này bao gồm những thứ như:

  • Khả năng kiểm soát số lượng ghi nhật ký dựa trên các yếu tố như cờ -verbose.
  • Khái niệm 'kênh' có thể được bật độc lập, tắt hoặc được đặt thành độ dài cụ thể. Ví dụ, để gỡ rối một vấn đề đồ họa, bạn có thể muốn kênh 'đồ họa' được đặt thành độ dài tối đa trong khi tắt các kênh 'mạng' và 'âm thanh'.
  • Kết thúc ngược linh hoạt từ đăng nhập vào tệp cục bộ trên đĩa để đăng nhập vào cơ sở dữ liệu từ xa qua mạng.
  • An toàn chủ đề để nhật ký hoạt động chính nó khi có khả năng ghi nhật ký đồng thời từ nhiều luồng khác nhau.
  • Gắn thẻ tự động các mục nhập nhật ký với dấu thời gian và mọi thông tin có liên quan khác (kênh, mức độ chi tiết, v.v.).

Đối với làm thế nào để sử dụng một thư viện khai thác gỗ, đó là phần nào phụ thuộc vào ứng dụng của bạn, nhưng đây là một số gợi ý chung:

  • Hãy sử dụng tốt các kênh và mức rườm rà nếu thư viện khai thác gỗ của bạn cung cấp chúng (và nó nên). Điều này sẽ giúp bạn quản lý những gì có thể trở thành một lượng lớn thông điệp tường trình khi ứng dụng của bạn phát triển.
  • Nếu bạn gặp phải tình trạng bất ngờ nhưng không gây tử vong và xử lý nó, hãy đăng nhập một số thông tin về nó trong trường hợp nó dẫn đến các sự cố không lường trước được sau này.
  • Khi khởi động ứng dụng, hãy ghi nhật ký bất kỳ thông tin nào có thể hữu ích cho việc tái tạo các lỗi hiếm sau này nếu bạn nhận được lỗi hoặc báo cáo sự cố từ khách hàng. Ở phía bên của quá nhiều thông tin, bạn không bao giờ biết những gì có thể hữu ích trước. Điều này có thể bao gồm những thứ như loại CPU, mô hình GPU và phiên bản trình điều khiển, bộ nhớ khả dụng, phiên bản hệ điều hành, dung lượng ổ đĩa cứng, v.v.
  • Chuyển đổi trạng thái khóa để bạn có thể theo dõi trạng thái của ứng dụng bạn đang gỡ lỗi một vấn đề.
+1

Điều này rất hữu ích. Cảm ơn một tấn. –

+0

Đây là một câu trả lời tuyệt vời, nhưng @UjjwalAryan, bạn cũng nên tìm hiểu cách sử dụng tệp pdb khi gỡ lỗi. – Bathsheba

+0

Vâng. Tôi sử dụng trình gỡ lỗi GNU. Nhưng tôi đã đọc mã nguồn của một dự án mã nguồn mở khác và tôi bắt gặp việc sử dụng thư viện glog ở đó đã được sử dụng rộng rãi. Tôi không thể tìm thấy bất kỳ thông tin trực tuyến nào về việc sử dụng các thư viện đó và cách chúng có thể được sử dụng hiệu quả. Vì vậy, tôi hỏi câu hỏi. Tôi không biết tại sao điều này đã bị gắn cờ quá rộng. Không có tài nguyên trực tuyến về nó và tiếc là hầu hết các lập trình viên chớm nở phải đối mặt với các vấn đề với những câu hỏi cơ bản như vậy. –

2

Rất nhiều chương trình sử dụng một số loại ghi nhật ký và có rất ít điểm để phát minh lại bánh xe mọi lúc, ngay cả khi mã tương đối đơn giản.

Thư viện khác cũng có thể sử dụng thư viện ghi nhật ký, vì vậy thay vì phải định cấu hình tệp nhật ký cho mỗi thư viện mà bạn đưa vào dự án, bạn có thể chỉ định cấu hình thư viện ghi nhật ký. Điều này cũng có nghĩa là bất kỳ lỗi nào có thể xuất hiện trong mã đăng nhập đều có thể được sửa bằng cách thay thế một thư viện thay vì phải thay thế nhiều thư viện.

Cuối cùng, nó làm cho mã dễ đọc hơn đối với các nhà phát triển khác vì họ không phải tìm ra cách bạn triển khai ghi nhật ký tùy chỉnh của mình.

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