勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

javascriptでのエラーログ

      2014/07/02

PHPでのエラーログ取りが思いのほか便利だったので
JSについても簡単にログ取りできないか探したところ、
お手軽な方法があった。

■index.php
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
window.onerror = function( errorMsg, url, lineNumber ) {
$.ajax({
url:"./error_dump.php",
data:{errorMsg:errorMsg, url:url, lineNumber:lineNumber},
type:"post"
});
};
</script>
<title>errorlog</title>
</head>
<body>
<h1>errorlog</h1>
<input type="button" value="error!" onClick="error_test();">
</body>
</html>

■error_dump.php
<?php
extract($_POST);
$file = "./error.log";
echo 1;
if ($errorMsg && $errorMsg && $lineNumber) {
$error_body = "
[errorMsg]
" . $errorMsg . "
[url]
" . $url . "
[lineNumber]
" . $lineNumber . "
--------------------
";
file_put_contents($file, $error_body, FILE_APPEND | LOCK_EX);
}
?>

■参考サイト
http://qiita.com/items/0c0e843d16e494fdd621

■その他
index.phpのボタンを押すとerror_test()なんて関数は無いので
エラーが走る。

window.onerrorでエラーを取得する。

※参考サイト
http://www.openspc2.org/JavaScript/ref/window/onerror.htm

エラーを取得したらajaxでerror_dump.php
エラーメッセージとファイル名、エラー発生行数を投げる。

受け取ったものをerror.logに追記する。

file_put_contents($file, $error_body, FILE_APPEND | LOCK_EX);

※リファレンス
http://php.net/manual/ja/function.file-put-contents.php

・FILE_APPEND
filename がすでに存在する場合に、データをファイルに上書きするするのではなく追記します。
これつけないと上書きされてしまう。

・LOCK_EX
書き込み処理中に、ファイルに対する排他ロックを確保します。

 - javascript

  関連記事

javascript_logo_unofficial-300x300
highcharts.jsで棒グラフと折れ線グラフを1つのグラフに入れる

やりたかった事は、 ・棒グラフと折れ線グラフを入れたい ・Y軸はそれぞれ違う値に ...

javascript_logo_unofficial-300x300
JavaScriptでAjaxを使わずにクロスドメインから変数を取得する

JavaScriptの配列形式で出力するファイルを作成しておき、 動的にソースに ...

javascript_logo_unofficial-300x300
setTimeoutの注意点

javascriptのsetTimeoutにて変数を用いた際に 想定外の挙動を起 ...

javascript_logo_unofficial-300x300
異なる文字コード間でform送信する

formの送り手がUTF-8で受け手がEUC-JP、 なんとかしてjavascr ...

javascript_logo_unofficial-300x300
javascriptでブラウザ判別&ページ遷移

var userAgent = window.navigator.userAge ...

javascript_logo_unofficial-300x300
JavaScriptで小数の計算(decimal.js)

JavaScriptで小数の計算をすると値がずれることがあった。調べてみるとJa ...

javascript_logo_unofficial-300x300
IE&javascriptの予約語

前にもひっかかった問題で、今日同じことで 時間をとられたのでメモ。 予約語? っ ...

javascript_logo_unofficial-300x300
JavaScriptで配列をループ処理(for-in)

JavaScriptでforeach使ったこと無かったけど、 配列のキーが連番じ ...

javascript_logo_unofficial-300x300
他サイトのRSS情報を画像付きで表示させる

WordPressでAというサイトを作成し、AのRSS情報をBというサイトでアイ ...

javascript_logo_unofficial-300x300
Highstockの使い方とカスタマイズ

株価などの値動きを図表とするローソク足のグラフを何らかの方法で描写したかった。調 ...