9

よく知られているロギング ライブラリの JS 名前空間を検査する「ユニバーサル」デバッグ ロギング機能を作成したいと考えています。

たとえば、現在、Firebug の console.log をサポートしています。

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

明らかに、これは Firebug がインストール/有効化されている場合にのみ Firefox で機能します ( Firebug Liteを使用する他のブラウザーでも機能します)。基本的に、どの環境に引っ張られるかわからない JS ライブラリを提供します。デバッグ出力をユーザーに報告する方法があるかどうかを調べたいと思います。

したがって、おそらくjQueryは何かを提供します-jQueryが存在することを確認して使用します。または、私がスニッフィングできるよく知られた IE プラグインが動作する可能性があります。しかし、それはかなり確立され、使用されているメカニズムでなければなりません。人々が作成するあいまいなログ機能をすべてチェックすることはできません。

回答ごとにライブラリ/テクノロジを 1 つだけ指定してください。また、alert() の使用は短期的な解決策としては優れていますが、堅牢なデバッグ ログが必要な場合や、実行のブロックが問題になる場合はうまくいきません。

4

8 に答える 8

7

log4javascriptを試すことができます。

開示:私はそれを書きました。

于 2009-06-01T16:00:33.177 に答える
7

私は個人的に Firebug/Firebug Lite を使用しており、IE では Visual Studio にデバッグを任せています。ただし、訪問者が非常識なブラウザを使用している場合、これらのどれも役に立ちません。エラーをサーバーに記録するには、クライアント側の JavaScript を取得する必要があります。以下にリンクしたパワーポイントのプレゼンテーションを見てください。JavaScript を使ってサーバーにログを記録させる方法について、いくつかの非常に優れたアイデアがあります。

基本的に、window.onerror と try {} catch(){} ブロックをフックして、有用なデバッグ情報をサーバーに返すリクエストを作成する関数を使用します。

このようなプロセスを自分の Web アプリケーションに実装しました。JSON でエンコードされたメッセージをサーバーに送り返す関数を呼び出すすべての catch(){} ブロックがあり、サーバーは既存のログ インフラストラクチャ (私の場合は log4perl) を使用します。私がリンクしているプレゼンテーションでは、GET 要求の一部としてエラーを含めて、JavaScript に画像を読み込むことも提案しています。唯一の問題は、スタック トレース (IE ではまったく生成されない) を含めたい場合、要求が大きくなりすぎることです。

Eric Pascarello による ClientSide エラーの追跡

PS:「ハードコア」ログに jQuery のようなライブラリを使用するのは良い考えではないと思います。おそらく、ログに記録しているエラーの理由jQuery または Firebug Lite です! おそらくエラーは、ブラウザー (IE6) がクレイジーな読み込み順序を実行し、ライブラリを正しく読み込むにはあまりにも愚かだったため、ある種の Null 参照エラーをスローしていることです。

私の例では、すべての JavaScript ログ コードが <head> にあり、.js ファイルとして取り込まれていないことを確認しました。このようにして、ブラウザーがどんな種類の変化球をスローしても、ログに記録できる可能性が高いと合理的に確信できます。

于 2008-09-18T18:07:42.590 に答える
4

Firebug liteは、ほとんどのブラウザーで少なくとも console.log 機能を提供する Firefbug の軽量バージョンのクロス ブラウザーです。

于 2008-09-18T17:55:45.253 に答える
3

MochiKitには次の機能があります (完全な名前空間解決でここに含まれています)。

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: "

MochiKit.Logging名前空間にはこれ以外にも多くの機能がありますが、これらは基本です。

于 2008-09-18T18:47:14.850 に答える
1

すでに jQuery を使用している場合は、jQuery デバッグ プラグイン (別名 jquery.debug.js) を心からお勧めします。見るhttp://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/ .

このプラグインを使用すると、グローバル スイッチを介してデバッグ ログのオンとオフを切り替えることができます。ロギングは次のようになります。

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

出力は、Firefox では console.log に送信され、他のブラウザーではページの下部に挿入された div ブロックに書き込まれます。

于 2008-09-18T17:58:26.357 に答える
0

Firebug Lite (Firefox 以外のブラウザー用) はどうですか? IE で Dojo コードをデバッグするとき以外は、あまり使用していません。しかし、Firebug コンソールを IE、Safari、および Opera に配置するために最善を尽くしています。

もちろん、常に信頼できる「アラート (err_msg);」があります。:D

于 2008-09-18T17:56:19.480 に答える
0

有望に見えるJQuery Loggingがあります。

于 2008-09-18T17:56:21.383 に答える
-1

私自身、私は次のことを固く信じています。

alert('Some message/variables');
于 2008-09-18T17:54:05.337 に答える