FileMaker の開発では Get(最終エラー) という取得関数で様々なエラーコードを取得し、予期せぬ動きを防いだり、バグを見つけるための手がかりとしています。
ただ、この関数は直近のエラーしか出してくれません。エラーのログを取るためにはそれなりのスクリプトをあちこちに設定する必要がありました。
しかし、今回追加されたスクリプトステップで、クライアントのドキュメントフォルダ(書類フォルダ)に、自動的に「ScriptErrors.log」という名前で保存してくれるようになりました。
左から
タイムスタンプ
セッション番号
ファイル名
アカウント名
エラーが出たスクリプト名
エラーが出たスクリプトステップ名と行番号
エラーコード
カスタムデバッグ情報
を記録してくれます。
また、エラーが出た時にレコードを特定するためにレコードのシリアル番号等を設定することも出来ます。上の図ではそれに加えてIPとFileMaker Pro Advancedのバージョンを表示しています。この辺は色々と工夫できそうですね。
注意点
タイムスタンプはFileMakerのフォーマットとは異なるので変換が必要です。
エラーログの記録の仕方
下記スクリプトステップを[オン]にするだけでエラーログを記録し続けます。
エラーログの収集を止める場合は[オフ]にすればOKです。
エラーログ収集中の注意点としては「ScriptErrors.log」をテキストエディタで編集するとエラーログの記録が止まります。再度エラーログを収集するにはエラーログの収集を終了してから、再度開始する必要があります。
下記図を参照してください。
ドキュメントフォルダ直下に保存されますので、これをFileMaker 18 のシステム側で取り込んでやれば各クライアントのエラー情報を統合することも可能でしょう。
ただ、この機能はあくまでデバッグ用の機能として使うべきかなと思います。勝手にファイルが生成されますし、延々と取り続けるとテキストファイルも大きくなっていきます。
「ScriptErrors.log」の肥大化を止めるにはシステム終了時に取り込んでから「ファイルを削除」スクリプトステップで削除するという方法もあるでしょう。
このスクリプトステップは、スクリプトデバッガでのデバッグが出来ないFileMaker Go 18 で実力を発揮するでしょう。
まとめ
エラーログはクライアント単位で記録する
タイムスタンプはFileMakerのフォーマットとは異なるので検索するには変換する計算フィールドを設定した方がいい
エラー収集中は「ScriptErrors.log」を触ってはいけない
エラー収集中はFileMaker的には排他がかかっているので、データファイル系のスクリプトもエラーが出ます
FileMaker Go 18 でも取れるので、デバッグが捗る
Comments