Sự khác biệt giữa logger.info và logger.debug


82

Sự khác biệt giữa logger.debugvà là logger.infogì?

Khi nào sẽ logger.debugđược in?

Câu trả lời:


30

Điều này sẽ phụ thuộc vào cấu hình ghi nhật ký. Giá trị mặc định sẽ phụ thuộc vào khuôn khổ đang được sử dụng. Ý tưởng là sau này bằng cách thay đổi cài đặt cấu hình từ INFO thành DEBUG, bạn sẽ thấy rất nhiều dòng (hoặc ít hơn nếu ngược lại) được in mà không cần biên dịch lại toàn bộ ứng dụng.

Nếu bạn nghĩ nên sử dụng cái nào thì việc suy nghĩ xem bạn muốn xem ở cấp độ nào. Đối với các cấp khác, ví dụ trong Log4J, hãy xem API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html


121

Tôi đề nghị bạn xem bài viết có tên "Giới thiệu ngắn gọn về log4j" . Nó chứa một lời giải thích ngắn gọn về các mức nhật ký và trình bày cách chúng có thể được sử dụng trong thực tế. Ý tưởng cơ bản về cấp độ nhật ký là bạn muốn có thể định cấu hình mức độ chi tiết của các nhật ký tùy thuộc vào tình huống. Ví dụ: nếu bạn đang cố gắng khắc phục sự cố, bạn sẽ muốn nhật ký dài dòng. Trong quá trình sản xuất, bạn có thể chỉ muốn xem các cảnh báo và lỗi.

Mức nhật ký cho mỗi thành phần trong hệ thống của bạn thường được kiểm soát thông qua một tham số trong tệp cấu hình, vì vậy rất dễ thay đổi. Mã của bạn sẽ chứa các câu lệnh ghi nhật ký khác nhau với các cấp độ khác nhau. Khi trả lời một Exception, bạn có thể gọi Logger.error. Nếu bạn muốn in giá trị của một biến tại bất kỳ điểm nào đã cho, bạn có thể gọi Logger.debug. Sự kết hợp giữa mức ghi có thể định cấu hình và các câu lệnh ghi trong chương trình của bạn cho phép bạn toàn quyền kiểm soát cách ứng dụng của bạn sẽ ghi lại hoạt động của nó.

Trong trường hợp ít nhất là log4j, thứ tự của các cấp độ nhật ký là:

DEBUG < INFO < WARN < ERROR < FATAL

Dưới đây là một ví dụ ngắn từ bài viết đó trình bày cách các cấp nhật ký hoạt động.

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

@momomo, bạn có thể muốn kiểm tra câu trả lời này để biết Tracemức nhật ký là gì.
RBT

Ví dụ của bạn If you want to print the value of a variable at any given point, you might call Logger.debugđã giúp tôi làm rõ sự nhầm lẫn giữa tôi DebugTracecấp. Cảm ơn bạn!
RBT

13

Chỉ cần làm rõ về tập hợp tất cả các cấp độ có thể, đó là:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

9

Về cơ bản, nó phụ thuộc vào cách cấu hình các log của bạn. Thông thường, bạn có đầu ra gỡ lỗi được viết ra trong quá trình phát triển nhưng bị tắt trong quá trình sản xuất - hoặc có thể đã chọn các danh mục gỡ lỗi được viết ra trong khi gỡ lỗi một khu vực cụ thể.

Điểm của việc có các mức độ ưu tiên khác nhau là cho phép bạn tăng / giảm mức độ chi tiết trên một thành phần cụ thể theo cách chi tiết hợp lý - và chỉ cần thay đổi cấu hình ghi nhật ký (chứ không phải mã) để thấy sự khác biệt.


2
  1. INFO được sử dụng để ghi thông tin chương trình của bạn đang hoạt động như mong đợi.
  2. DEBUG được sử dụng để tìm lý do trong trường hợp chương trình của bạn hoạt động không như mong đợi hoặc trường hợp ngoại lệ xảy ra. đó là lợi ích của nhà phát triển.

1

Đây là một câu hỏi rất cũ, nhưng tôi không hiểu ở đây nên tôi sẽ thêm 2 xu của mình:

Mọi cấp độ tương ứng / ánh xạ với một kiểu người dùng:

  • gỡ lỗi: nhà phát triển - gỡ lỗi thủ công
  • theo dõi: ghi nhật ký tự động và theo dõi bước - hỗ trợ cấp độ 3
  • thông tin: kỹ thuật viên / hỗ trợ cấp 1/2
  • cảnh báo: lỗi kỹ thuật viên / người dùng: cảnh báo tự động / hỗ trợ mức 1
  • quan trọng / nghiêm trọng: phụ thuộc vào thiết lập của bạn - CNTT cục bộ

0

Sự khác biệt giữa logger.debug và logger.info là gì?

Đây chỉ là một số cấp độ mặc định đã được xác định. Bạn có thể xác định cấp độ của riêng mình nếu bạn muốn. Mục đích của các cấp đó là bật / tắt một hoặc nhiều trong số chúng mà không thực hiện bất kỳ thay đổi nào trong mã của bạn.

Khi logger.debug sẽ được in ra ??

Khi bạn đã bật gỡ lỗi hoặc bất kỳ cấp cao hơn nào trong cấu hình của mình.


0

Nó phụ thuộc vào mức bạn đã chọn trong tệp cấu hình log4j của mình.

<Loggers>
        <Root level="info">
        ...

Nếu cấp độ của bạn là "thông tin" (theo mặc định), logger.debug(...)sẽ không được in trong bảng điều khiển của bạn. Tuy nhiên, nếu cấp độ của bạn là "gỡ lỗi", nó sẽ.

Tùy thuộc vào mức độ nghiêm trọng của mã của bạn, bạn nên sử dụng mức chính xác nhất trong số các mức sau:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.