できれば変数を含めて、エラーコンソールにメッセージを出力するにはどうすればよいですか?
たとえば、次のようなものです。
print('x=%d', x);
できれば変数を含めて、エラーコンソールにメッセージを出力するにはどうすればよいですか?
たとえば、次のようなものです。
print('x=%d', x);
回答:
console.log()
IEを含むすべてのブラウザーで動作することを指摘しておく価値があります。ただし、すべての場合において、その時点でデバッガーウィンドウを開いておく必要があります。開いていない場合、を呼び出すとconsole
エラーが発生します。
console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message
ロギングメッセージにCSSを追加することもできます。
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
使用で、コンソール内でcssを使用できるようになりました:|
例外はJavaScriptコンソールに記録されます。Firebugを無効にしたい場合は、これを使用できます。
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
使用法:
log('Hello World');
log('another message');
throw
に包む必要がある理由を説明していただけますsetTimeout
か?
クロスブラウザで機能するこれを行う1つの良い方法は、JavaScriptのデバッグ:アラートを破棄するで概説されています!。
throw()
間違いなくこれを行う方法ではありません。遅かれ早かれトラブルに巻き込まれるでしょう。私にとってはそれよりも早くなりました:(
ここでは、デバッガーのコンソールではなく、ブラウザーのエラーコンソールにメッセージを出力する方法についての文字どおりの質問に対する解決策を示します。(デバッガをバイパスするのには十分な理由があるかもしれません。)
エラーコンソールにメッセージを表示するためにエラーをスローする提案に関するコメントで述べたように、1つの問題は、これにより実行のスレッドが中断されることです。スレッドを中断したくない場合は、setTimeoutを使用して作成された別のスレッドでエラーをスローできます。したがって、私の解決策(これはIvo Danihelkaによる解決策の詳細になります):
var startTime = (new Date()).getTime();
function logError(msg)
{
var milliseconds = (new Date()).getTime() - startTime;
window.setTimeout(function () {
throw( new Error(milliseconds + ': ' + msg, "") );
});
}
logError('testing');
タイムアウトにより、メッセージの表示順序が歪む可能性があるため、開始時間からの時間をミリ秒単位で示しています。
Errorメソッドの2番目の引数はファイル名用です。これは、不要なファイル名と行番号が出力されないようにするための空の文字列です。呼び出し元の関数を取得することは可能ですが、単純なブラウザに依存しない方法では取得できません。
エラーアイコンの代わりに警告またはメッセージアイコンを使用してメッセージを表示できればよいのですが、その方法を見つけることができません。
throwを使用する際のもう1つの問題は、囲みのtry-catchによってキャッチおよびスローされる可能性があり、スローを別のスレッドに配置することで、その障害も回避されることです。ただし、エラーをキャッチできる別の方法があります。それは、window.onerrorハンドラーが別の処理を行うハンドラーに置き換えられた場合です。そこであなたを助けることはできません。
実際に質問に答えるには:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
エラーの代わりに、情報、ログ、または警告を使用することもできます。
console.error(..)
非標準の機能であり、本番環境では使用しないでくださいと言っています。これについてどう思いますか?console.error
vs を使用する初心者プログラマに何か提案はありconsole.log
ますか?
Firebugを使用していて、IE、Safari、またはOperaもサポートする必要がある場合、Firebug Liteはこれらのブラウザーにconsole.log()サポートを追加します。
上記の「throw()」に関するメモ。それはページの実行を完全に停止するようです(私はIE8でチェックしました)ので、「進行中のプロセス」のロギング(特定の変数の追跡など)にはあまり役に立ちません。
私の提案はおそらく、ドキュメントのどこかにtextarea要素を追加し、必要に応じて情報をログに記録するためにその値(テキストを変更する)を変更(または追加)することです...
console.log()
、throw()
などはまた、の動作と何も間違っているthrow()
あなたが暗示するように見えるよう-それは実行を停止しているという事実は、意図的かつ文書化(ある開発者。 mozilla.org/en-US/docs/Web/JavaScript/Reference/…)、他のプログラミング言語で例外がスロー/キャッチされる方法と一致しています。(実行を停止せずに変数の内容をログに記録する場合は、それconsole.log()
が目的です。)
console.log
-それで人々は代わりを与えていました。throw()
実行の停止については、もちろんそれは意図的なものであり、そうではないと誰も言っていません。つまり、通常だ理由ですません ... OPが望んランタイムでのデバッグ情報を、ログに記録するための良い方法
いつものように、Internet Explorerはローラースケートの大きな象ですconsole.log()
。
jQueryのログは非常に簡単に変更できますが、どこにでも追加するのは面倒です。jQueryを使用している場合の1つの解決策は、最後にjQueryファイルに入れて、最初に縮小することです。
function log()
{
if (arguments.length > 0)
{
// Join for graceful degregation
var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];
// This is the standard; Firebug and newer WebKit browsers support this.
try {
console.log(args);
return true;
} catch(e) {
// Newer Opera browsers support posting erros to their consoles.
try {
opera.postError(args);
return true;
}
catch(e)
{
}
}
// Catch all; a good old alert box.
alert(args);
return false;
}
}
訪問https://developer.chrome.com/devtools/docs/console-apiを完全コンソールAPIリファレンスのために
console.error(object[Obj,....])\
この場合、オブジェクトはエラー文字列になります
function foo() {
function bar() {
console.trace("Tracing is Done here");
}
bar();
}
foo();
console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate
To Print Error:- console.error('x=%d', x);
console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");
これを行う最も簡単な方法は次のとおりです。
console.warn("Text to print on console");
あなたの質問に答えるために、あなたはES6機能を使うことができます、
var var=10;
console.log(`var=${var}`);
これはコンソールに出力されませんが、いくつかのデバッグに役立つメッセージを含むアラートポップアップが開きます。
ただ:
alert("message");