2010-02-26 53 views

Trả lời

18

Đ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 khung được sử dụng. Ý tưởng là sau này bằng cách thay đổi một thiết lập cấu hình từ INFO sang DEBUG bạn sẽ thấy một tấn nhiều hơn (hoặc ít hơn nếu cách khác xung quanh) dòng in mà không 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ì nó sẽ suy nghĩ về những gì bạn muốn xem ở cấp độ nào. Đối với các cấp khác chẳng hạn như trong Log4J, hãy xem API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html

6

Về cơ bản nó phụ thuộc vào cách logger của bạn được cấu hình. Thông thường, bạn sẽ 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ể có chọn các loại gỡ lỗi viết ra trong khi gỡ lỗi một khu vực cụ thể.

Điể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 hợp lý - và chỉ cần thay đổi cấu hình ghi nhật ký (thay vì mã) để xem Sự khác biệt.

100

Tôi đề nghị bạn xem bài viết có tên "Short Introduction to log4j". Nó chứa một lời giải thích ngắn về mức độ đăng nhập và chứng tỏ làm thế nào 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 chi tiết các nhật ký chứa 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ý rất chi tiết. Trong quá trình sản xuất, bạn có thể chỉ muốn thấy cảnh báo và lỗi.

Mức nhật ký cho mỗi thành phần của 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, do đó dễ thay đổi. Mã của bạn sẽ chứa các câu lệnh đăng nhập khác nhau với các cấp độ khác nhau. Khi trả lời 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 cụ thể nào, bạn có thể gọi Logger.debug. Sự kết hợp này của một mức ghi nhật ký có thể 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 kiểm soát hoàn toàn cách ứng dụng của bạn sẽ ghi lại hoạt động của nó.

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

DEBUG < INFO < WARN < ERROR < FATAL 

Dưới đây là một ví dụ ngắn từ bài viết mà thể hiện như thế nào mức log làm việc.

// 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"); 
+0

đâu dấu vết? – momomo

+0

@momomo bạn có thể muốn kiểm tra [this] (http://stackoverflow.com/a/5278006/465053) câu trả lời để biết mức độ đăng nhập 'Trace' là gì. – RBT

+0

Ví dụ của bạn 'Nếu bạn muốn in giá trị của một biến tại bất kỳ điểm nào, bạn có thể gọi Logger.debug' đã giúp tôi làm rõ sự nhầm lẫn giữa mức' Debug' và 'Trace'. Cảm ơn bạn! – RBT

0

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

Đây chỉ là một số mức mặc định đã được xác định. Bạn có thể xác định các cấp độ của riêng bạn 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 ??

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

7

Chỉ cần làm rõ về các thiết lập của tất cả các cấp có thể, đó là:

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

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

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

Nếu trình độ của bạn là "info" (theo mặc định), logger.debug(...) sẽ không được in trong giao diện đ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 độ quan trọng của các mã của bạn, bạn nên sử dụng mức độ chính xác nhất trong số những người sau đây:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 
Các vấn đề liên quan