サーバスクリプトのエラーログを出力したい
回答¶
複数の方法があるため、エラーログの取得目的に応じて使い分けてください。
概要¶
サーバスクリプトでエラーが発生すると、コマンドボタンエリアの上にエラーメッセージが表示され、エラーの内容はシステムログに記録されます。しかし、システムログは特権ユーザでないと閲覧することができません。
プリザンターは特権ユーザでないユーザがエラーの内容を確認する方法を複数用意しています。エラーログの取得目的に応じて使い分けてください。
1. 予見可能なエラー(例外)をログ出力する¶
try-catchとログ出力メソッドを使用します。この場合、以下で説明する「エラーの詳細を取得する」は無視されます。
ログ出力メソッド¶
ログの出力先別に、以下のログ出力メソッドを使い分けてください。
| 出力先 | メソッド |
|---|---|
| 以下の一方または両方 ・開発者ツールのコンソール ・システムログ | logs.LogException |
| ・開発者ツールのコンソール | context.Log |
サンプルコード¶
try {
context.Log('処理開始');
const myItems = items.Get('aaaa'); // 引数に文字列を渡す
const myItem = myItems[0]; // myItemsがnullなのに配列要素を指定→エラー
context.Log(myItem.Title);
context.Log('処理終了');
} catch(e) {
context.Log('エラー発生');
// エラーログ出力
context.Log(e.stack);
}
TryCatch¶
サーバスクリプト画面のTryCatchを有効化すると、記述したコードをtryブロックに設定し、catchブロックではエラー内容をlogs.LogExceptionにて出力する処理を設定します。これによりエラー内容をブラウザの管理者ツール上のコンソールに表示するとともにシステムログに記録します。
ログ出力サンプル¶
出力されたログはブラウザの開発者ツールのConsoleに、以下のように出力されます。
開発者ツールは、Chromeなど代表的なブラウザでF12キーを押下したときに表示される画面です。
2. 予見不可能なエラーをログ出力する¶
テーブルの管理画面のサーバスクリプトタブにある「エラーの詳細を取得する」を有効化してください。
エラー発生時に「開発者ツール」の「コンソール」画面からサーバスクリプトのデバッグに役立つ情報を得られます。本機能は、無効化されていない全てのサーバスクリプトが対象となります。
サンプルコード¶
以下のサンプルコードは上記サンプルコードの3行目~5行目と同じです。
const myItems = items.Get('aaaa'); // 引数に文字列を渡す
const myItem = myItems[0]; // myItemsがnullなのに配列要素を指定→エラー
context.Log(myItem.Title);
条件に「作成後」を設定し、レコードを新規作成すると、以下のように表示されます。
サーバスクリプトの条件として、「サイト設定の読み込み時」「ビュー処理時」「レコード読み込み時」などを指定した場合は、エラーページ(/errors/serverscripterror)へのリダイレクトが発生します。このような場合はコンソールにエラーの詳細は出力されません。
「エラーの詳細を取得する」を有効化した場合、try-catch文で補足した例外は出力されません。
対応バージョン¶
| 対応バージョン | 内容 |
|---|---|
| 1.5.1.0 以降 | 「エラーの詳細を取得する」の実装に合わせて更新 |


