2013-05-11 32 views
7

Mã JS của tôi thường đầy console.log() thông báo gỡ lỗi. Đôi khi tốt hơn là tắt chúng đi, hoặc tắt một số phần của chúng.Console.log gỡ lỗi tin nhắn quản lý

Ví dụ: tôi có thể bọc câu lệnh console.log() trong một số chức năng với các điều kiện được xác định bởi một số hằng số. Đó có phải là cách tốt nhất để quản lý đầu ra gỡ lỗi hoặc là lựa chọn thay thế thanh lịch hơn?

Trả lời

4

Gói console.log vào một hàm hoạt động tốt. Nhưng lưu ý rằng cũng có rất nhiều tiện ích ghi nhật ký cho javascript. Một chút google trên "js logger" có thể mang lại kết quả phù hợp.

+0

Lòng biết ơn sâu sắc! Đã tìm thấy một số thứ! :) – zavg

2

JS logger là công cụ khá tốt và nhẹ với cài đặt có thể điều chỉnh cho các mức bản ghi nhật ký và một số mức ghi được xác định trước (DEBUG, INFO, WARN, ERROR).

5

Bunyan môđun khai thác gỗ là phổ biến cho Node.js

đang

Ví dụ hi.js:

var bunyan = require('bunyan'); 
var log = bunyan.createLogger({name: 'myapp'}); 
log.info('hi'); 
log.warn({lang: 'fr'}, 'au revoir'); 

Output:

{"name":"myapp","hostname":"localhost","pid":40161,"level":30,"msg":"hi","time":"2013-01- 04T18:46:23.851Z","v":0} 
{"name":"myapp","hostname":"localhost","pid":40161,"level":40,"lang":"fr","msg":"au revoir","time":"2013-01-04T18:46:23.853Z","v":0} 

Sau đó bạn có thể lọc từ dòng lệnh:

$ node hi.js | bunyan -l warn 
[2013-01-04T19:08:37.182Z] WARN: myapp/40353 on localhost: au revoir (lang=fr) 
3

Nếu bạn đang sử dụng Node.js thì debug là cực kỳ hiệu quả để thay thế cho console.log()

Về cơ bản, nó là một thay thế cho console.log() ngoại trừ bạn có thể bật nó ở dòng lệnh bằng DEBUG biến môi trường dựa trên cách bạn đã khởi tạo biến đó trong mỗi tệp.

Hãy nói rằng tôi có một dự án với một vài tập tin tham chiếu từ file index.js tôi:

one.js

var debug = require('debug')('one-one'); 

var func = function() { 
    debug('func'); 
} 

two.js

var debug = require('debug')('one-two'); 

var func = function() { 
    debug('func'); 
} 

Bạn đã debug được khởi tạo với tên "one-one" trong tệp đầu tiên và "one-two" trong tệp thứ hai.

Trên dòng lệnh tôi có thể chạy chúng như thế này:

node index.js 

Kết quả: không có đầu ra debug. Tuy nhiên, nếu tôi chạy nó như thế này:

DEBUG=* node index.js 

Cả hai báo cáo debug sẽ được viết ra, tuy nhiên, trong màu sắc khác nhau và với tên debug (một một hoặc One-Two) vì vậy tôi có thể biết được chúng xuất phát từ tệp.

Bây giờ, giả sử bạn muốn thu hẹp thêm một chút. Bạn có thể chạy:

DEBUG = * - hai chỉ mục nút.js

Để chỉ nhận được kết quả từ debug đó là được thiết lập với "-Hai" vào cuối tên hoặc

DEBUG = one- * nút index.js

để mọi thứ bắt đầu bằng "one-"

Bạn cũng có thể nói rằng bạn muốn mọi thứ, hoặc tập hợp mọi thứ hoặc loại trừ mẫu hoặc tập hợp. Để loại trừ một cái gì đó bạn đặt trước nó với một dấu gạch ngang, một ví dụ:

DEBUG = một *, khỉ *, - khỉ: chuối, -elephant, -chimp: * nút index.js

này sẽ bao gồm tất cả mọi thứ bắt đầu với "một" hay "khỉ" và không bao gồm bất cứ điều gì được gọi là "khỉ: chuối", hoặc "con voi" hay bắt đầu bằng "tinh tinh:"

Nếu bạn muốn loại trừ tất cả mọi thứ trừ thì:

DEBUG = *, - patter n1, -pattern2 node index.js

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