コンテンツにスキップ
「プリザンター入門」発売中!

サーバスクリプトのエラーログを出力したい

回答

複数の方法があるため、エラーログの取得目的に応じて使い分けてください。


概要

サーバスクリプトでエラーが発生すると、コマンドボタンエリアの上にエラーメッセージが表示され、エラーの内容はシステムログに記録されます。しかし、システムログは特権ユーザでないと閲覧することができません。

プリザンターは特権ユーザでないユーザがエラーの内容を確認する方法を複数用意しています。エラーログの取得目的に応じて使い分けてください。

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キーを押下したときに表示される画面です。

ブラウザの開発者ツールのConsoleにログが出力されている状態

2. 予見不可能なエラーをログ出力する

テーブルの管理画面のサーバスクリプトタブにある「エラーの詳細を取得する」を有効化してください。

エラー発生時に「開発者ツール」の「コンソール」画面からサーバスクリプトのデバッグに役立つ情報を得られます。本機能は、無効化されていない全てのサーバスクリプトが対象となります。

サンプルコード

以下のサンプルコードは上記サンプルコードの3行目~5行目と同じです。

const myItems = items.Get('aaaa');  // 引数に文字列を渡す
const myItem = myItems[0];    // myItemsがnullなのに配列要素を指定→エラー
context.Log(myItem.Title);

条件に「作成後」を設定し、レコードを新規作成すると、以下のように表示されます。

レコードの新規作成時にエラーの内容がConsoleに出力された状態

サーバスクリプトの条件として、「サイト設定の読み込み時」「ビュー処理時」「レコード読み込み時」などを指定した場合は、エラーページ(/errors/serverscripterror)へのリダイレクトが発生します。このような場合はコンソールにエラーの詳細は出力されません。

「エラーの詳細を取得する」を有効化した場合、try-catch文で補足した例外は出力されません。

対応バージョン

対応バージョン 内容
1.5.1.0 以降 「エラーの詳細を取得する」の実装に合わせて更新

関連情報