ファイルへの書き込みは、私にとって退屈な作業のように思えます。ブラウザ コードが通常持っていない権限が必要であり、ファイル I/Oにアクセスするために作成する必要があるアドオンと交渉する必要があります。
私が理解していることから、あなたの問題は
Firefox にすべてのエラーを記録させたい
これに取り組むために私たちができるいくつかのアプローチがあります
最初のアプローチ - すべてを localStorage にも記録します。
現在、実際のファイルに書き込むのではなく、localStorage
orに書き込むことができますIndexedDB
。
localStorage["myApplog"] = localStorage["myApplog"] || "";
var oldLog = console.log;
console.log = function(){
oldLog.apply(console,arguments); // use the old console log
var message = "\n "+(new Date).toISOString() + " :: "+
Array.prototype.join.call(arguments," , "); // the arguments
localStorage["myApplog"] += message;
}
これはかなり汚れていて、かなり遅いですが、ジョブを完了させる必要があり、後でローカル ストレージのログにアクセスできます。ロギングに夢中にならないのであれば、私が正しく思い出すと、LocalStorageには〜5MBの制限があります。選択的に実行することもできます。
2 番目のアプローチ - エラーのみをログに記録する
これは、Pumbaa80 が提案したものと似ています。単純にオーバーライドwindow.onerror
して、エラーのみをログに記録できます。
// put an empty string in loggedWinErrors first
var oldError = window.onerror || function(){};
window.onerror = function(err,url,lineNumber){
oldError.call(this,err,url,lineNumber);
var err ="\n Error: (file: " + url+", error: "+err+", lineNumber: "+lineNumber+")");
localStorage["loggedWinErrors"] += err;
}
3 番目の抜本的なアプローチ - VM を使用します。
これは最も強力なバージョンですが、最も問題のあるユーザー エクスペリエンスを提供します。仮想マシンでキオスクを実行すると、キャッチされない例外が検出されます。マシンをフリーズして状態を保存し、代わりにバックアップ VM を実行します。最も恐ろしいエラーに取り組むときだけこれをしなければなりませんでしたが、それはきれいではありません. キャプチャされた状態全体が本当に必要でない限り、これを行わないでください。
実際、この前に拡張を行ってください。これは面倒ですが、非常に確実な結果が得られます。
結論として、最初のアプローチ、または 2 番目のアプローチだけでも、必要なものには十分すぎると思います。localStorage
セキュリティの問題なしに状態を保存するために Web ページが取得する抽象化されたストレージです。それが十分でない場合は、IndexedDB ソリューションについて話すことができます。
それはすべて、実際のユースケースに依存します。