4D開発者として、あなたはすでに問題のトラブルシューティングのためにデバッグログを有効にしたことがあるかもしれません。4D v17 R5では、現在のプロセスのみをログし、メンバーメソッド(コレクションまたはオブジェクトメソッド)の呼び出しをログするなど、これらのファイルを分析するのに役立ついくつかの改良が導入されています。
プロセスロギング用の新しいセレクタ
コマンドは、新しいセレクタを受け入れるようになりました。 SET DATABASE PARAMETERコマンドは新しいセレクタ、Current process debug log recordingを受け入れるようになりました。プロセスの任意の部分から呼び出すと、現在のプロセスのログを開始し、4D logs フォルダに“4DDebugLog_pX_Y.txt”ファイルを作成します (X はプロセスの PUID、Y はシーケンスファイル番号です)。もちろん、この新しいセレクタを使用して、Get database parameter コマンドでプロセスデバッグログの状態を取得することもできます。
SET DATABASE PARAMETER(Current process debug log recording;2+4+8)
によって記録されるプロセスを除く、すべてのプロセスの活動のログを記録するために、Debug log recording セレクタを 使用し続けることができます。 Current process debug log recording.
注意: このコードの行を使用すると、簡単にデバッグログにアクセスすることができます。
SHOW ON DISK(Get 4D folder(Logs folder))
以下のスクリーンショットでは、5つのプロセスによって生成されたログを見ることができます。
SET DATABASE PARAMETER はスレッドセーフではないので、プロセスは協調モードで開始されることに留意してください。
メンバーメソッド ロギング
デフォルトで、デバッグ・ログにはメンバー・メソッドの呼び出しが含まれるようになりました。これらはコマンドタイプ番号 9 でログに記録されます。メンバー・メソッドを含めたくない場合は SET DATABASE PARAMETERコマンドとDebug log recording またはCurrent process debug log recording セレクタを、値 32 を持つ新しいオプションで呼び出します。この オプションを組み合わせることで、必要なデバッグログを取得することができます。
この例では、WiFiとEthernetのインターフェースを別々のコレクションでログに記録する方法を示しています。
SET DATABASE PARAMETER
SET DATABASE PARAMETER(Current process debug log recording;2+4+8)
C_COLLECTION ($_networkInterfaces;$_ethernet;$_wifi)
$_networkInterfaces:=Get system info.networkInterfaces$_ethernet :=$_networkInterfaces.query("type = :1"; "ethernet")$_wifi:=$_networkInterfaces.query("type = :1"; "wifi")
Current process debug log recording ;0 )
コードが返されます。
より高いセキュリティ
以前は、ログを起動すると、利用可能なディスク容量がなくなるまでファイルが生成されました。4Dサーバーの管理画面でのエラーや偶発的な起動を避けるため、生成されるファイルの数はデフォルトで50に制限されています(危険な場合があります)。この制限を変更するには SET DATABASE PARAMETERコマンドとCircular log limitation セレクターで変更できます。
// Limit the number of logs files to 100 (the default number is set to 50)
SET DATABASE PARAMETER(Circular log limitation;100)