2008-09-18 33 views
9

Tôi muốn tạo chức năng ghi nhật ký gỡ lỗi "phổ quát" để kiểm tra không gian tên JS cho các thư viện ghi nhật ký nổi tiếng.Công cụ ghi nhật ký gỡ lỗi nào có sẵn từ Javascript?

Ví dụ, hiện nay nó hỗ trợ console.log Firebug của:

var console = window['console']; 
if (console && console.log) { 
    console.log(message); 
} 

Rõ ràng, điều này chỉ hoạt động trong Firefox nếu Firebug được cài đặt/kích hoạt (nó sẽ cũng làm việc trên các trình duyệt khác với Firebug Lite). Về cơ bản, tôi sẽ cung cấp một thư viện JS mà tôi không biết môi trường nào sẽ được kéo vào, và tôi muốn có thể tìm hiểu xem có cách nào để báo cáo đầu ra gỡ lỗi cho người dùng hay không.

Vì vậy, có lẽ jQuery cung cấp một cái gì đó - tôi muốn kiểm tra xem jQuery có mặt và sử dụng nó hay không. Hoặc có thể có các plugin IE nổi tiếng hoạt động mà tôi có thể đánh hơi. Nhưng nó phải là một cơ chế khá được thiết lập và sử dụng tốt. Tôi không thể kiểm tra mọi chức năng nhật ký tối nghĩa mà mọi người tạo.

Xin vui lòng, chỉ có một thư viện/công nghệ cho mỗi câu trả lời, để họ có thể nhận được xếp hạng phiếu bầu. Ngoài ra, bằng cách sử dụng alert() là một giải pháp ngắn hạn tốt nhưng bị hỏng nếu bạn muốn đăng nhập gỡ lỗi mạnh mẽ hoặc nếu chặn thực thi là một vấn đề.

Trả lời

-1

Myself, tôi là một niềm tin vững chắc trong những điều sau đây:

alert('Some message/variables'); 
+0

Đây là giải pháp tạm thời tốt, nhưng không thành công nếu bạn đang phát hành ghi nhật ký mức thông tin, thường có rất nhiều. Ứng dụng sẽ nhanh chóng trở thành không sử dụng được vì tất cả các cảnh báo() s – levik

+0

Ahh, tôi cho rằng đó là nhiều hơn về việc xuất ngắn hạn thông tin – Teifion

+0

Thậm chí nếu bạn chỉ đơn giản là "xuất" thông tin, bởi vì cảnh báo là một cuộc gọi chặn, nó có thể , gây ra tác dụng phụ, đặc biệt. với Ajax. Tôi đã có mã hoạt động kém chỉ vì một cảnh báo được đặt ở vị trí không đúng. –

4

Firebug lite là một trình duyệt chéo, phiên bản lite của Firefbug rằng sẽ ít nhất là cung cấp cho bạn khả năng console.log trên hầu hết các trình duyệt.

0

Điều gì về Firebug Lite (đối với những trình duyệt không phải của Firefox)? Tôi đã không sử dụng nó nhiều, ngoại trừ khi gỡ lỗi mã Dojo trong IE. Nhưng nó cố gắng hết sức để đặt một giao diện điều khiển Firebug trong IE, Safari và Opera.

Tất nhiên luôn có cảnh báo 'đáng tin cậy' (err_msg); : D

1

Nếu bạn đã sử dụng jQuery, tôi có thể chân thành khuyên bạn nên sử dụng plugin jQuery Debug (a.k.a., jquery.debug.js). Xem http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/.

Plugin này cho phép bạn bật hoặc tắt tính năng ghi nhật ký gỡ lỗi thông qua chuyển đổi chung. Ghi nhật ký trông giống như sau:

$.log('My value is: ' + val); 

Đầu ra được gửi tới console.log trong Firefox và được ghi vào khối div được chèn ở cuối trang trên các trình duyệt khác.

+0

Tôi không sử dụng jQuery - như đã nêu, tôi đang tạo một thư viện CÓ THỂ được tải trong một trang có jQuery. Nếu điều này xảy ra, tôi muốn sử dụng các tính năng jQuery mà tôi có thể dựa vào ... Nhưng một plugin của bên thứ ba là một ... – levik

7

Cá nhân tôi sử dụng Firebug/Firebug Lite và trên IE để Visual Studio thực hiện gỡ lỗi. Không ai trong số này làm bất kỳ tốt khi một khách truy cập đang sử dụng một số trình duyệt điên rồ mặc dù. Bạn thực sự cần phải nhận được javascript phía khách hàng của bạn để đăng nhập lỗi của nó vào máy chủ của bạn. Hãy xem bài thuyết trình điểm năng lượng mà tôi đã liên kết với bên dưới. Nó có một số ý tưởng khá gọn gàng về cách để có được javascript của bạn để đăng nhập các công cụ trên máy chủ của bạn.

Về cơ bản, bạn móc window.onerror và cố gắng {} catch() {} chặn bằng hàm làm cho yêu cầu quay lại máy chủ của bạn với thông tin gỡ lỗi hữu ích.

Tôi vừa mới triển khai quy trình như vậy trên ứng dụng web của riêng mình. Tôi đã có mọi khối catch() {} gọi một hàm gửi một thông điệp được mã hóa JSON trở lại máy chủ, do đó sử dụng cơ sở hạ tầng ghi nhật ký hiện có của tôi (trong trường hợp của tôi là log4perl).Bản trình bày tôi liên kết cũng đề xuất tải hình ảnh trong javascript của bạn trong đó bao gồm các lỗi như một phần của yêu cầu GET. Vấn đề duy nhất là nếu bạn muốn bao gồm các dấu vết ngăn xếp (mà IE không tạo ra cho bạn ở tất cả), yêu cầu sẽ là quá lớn.

Tracking ClientSide Errors, by Eric Pascarello

PS: tôi muốn thêm rằng tôi không nghĩ rằng đó là một ý tưởng tốt để sử dụng bất kỳ loại thư viện như jQuery cho "hardcore" khai thác gỗ vì có thể là lý do cho sự lỗi mà bạn đang đăng nhập jQuery hoặc Firebug Lite! Có thể lỗi là trình duyệt (ho IE6) đã thực hiện một số thứ tự tải điên và đang ném một số loại Lỗi tham chiếu Null vì quá ngu ngốc để tải thư viện chính xác.

Trong trường hợp của mình, tôi đảm bảo tất cả mã đăng nhập javascript của tôi nằm trong số < đầu > và không được kéo dưới dạng tệp .js. Bằng cách này, tôi có thể chắc chắn rằng không có vấn đề gì các loại đường cong quả bóng trình duyệt ném, tỷ lệ cược là tốt tôi có thể đăng nhập nó.

3

MochiKit có các chức năng sau (bao gồm ở đây với độ phân giải không gian tên đầy đủ):

MochiKit.Logging.logDebug() // prefaces value with "DEBUG: " 
MochiKit.Logging.log() // prefaces value with "INFO: " 
MochiKit.Logging.logError() // prefaces value with "ERROR: " 
MochiKit.Logging.logFatal() // prefaces value with "FATAL: " 
MochiKit.Logging.logWarning() // prefaces value with "WARNING: " 

Có rất nhiều hơn để không gian tên hơn thế này MochiKit.Logging, nhưng đây là những điều cơ bản.

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