🧾

【TouchDesginer】Logger COMPでログ管理

に公開

TouchDesignerで展示コンテンツなどを作るときに、処理の状態やエラーなどをログとしてファイル出力しておくとトラブルが発生したときに対処しやすくなります。

TouchDesginerでは、Logger COMPとしてログを管理する機能が提供されています。
https://derivative.ca/UserGuide/Logger

Logger COMPは、TouchDesigner内部であらかじめ起動しているop.TDResources.TDAppLoggerを利用できるほかに、Palette > Toolsのloggerから自分で作成することができます。公式ドキュメントによると、通常はop.TDResources.TDAppLoaderを使い、もし大規模なシステムなどでコンポーネント単位でログを管理したい場合はPaletteからLogger COMPを追加するのが良いそうです。

Logger COMPでログを出力するには、以下のようにログレベルに応じたメソッドを呼び出します。

op.TDResources.TDAppLogger.Debug('debug message')
op.TDResources.TDAppLogger.Info('info message')
op.TDResources.TDAppLogger.Warning('warning message')
op.TDResources.TDAppLogger.Error('error message')
op.TDResources.TDAppLogger.Critical('critical message')

ログファイルの出力ディレクトリや出力対象のログレベルはLogger COMPのパラメータまたはLoggerExtのプロパティから設定できます。詳細なパラメータやメソッドは公式のドキュメントから確認してください。
https://derivative.ca/UserGuide/Palette:logger
https://derivative.ca/UserGuide/Palette:logger_Ext


op.TDResources.TDAppLoggerはネットワークエディターから直接アクセスできませんが、Textportなどで以下のスクリプトを実行するとパラメータダイアログを開くことができます。

op.TDResources.TDAppLogger.par.Openparametersdialog.pulse()

パラメータダイアログからop.TDResources.TDAppLoggerはデフォルトで出力するログレベルがWARNING以上で、ログをファイルとしても書き出すほかにTextportにも出力する設定になっていることがわかります。

出力ディレクトリを指定するLog Folderパラメータはエクスプレッションで以下のように書かれています。

app.preferencesFolder + '/TDLogs'

私が試したところWindowsとMacでそれぞれ以下の場所にログファイルが作成されました。

Windows
C:\Users\[ユーザー名]\AppData\Local\Derivative\TouchDesigner099\TDLogs
Mac
/Users/[ユーザー名]/Library/Application Support/Derivative/TouchDesigner099/TDLogs

ファイル名は[toeファイル名]_[Logger Name].logになるようです。例えばFoo.toeでLogger COMPのLogger NameプロパティにBarを指定した場合、ログファイル名はFoo_Bar.logになります。


Palette > ToolsのloggerからLogger COMPを作成した場合、Parent Loggerプロパティにop.TDResources.TDAppLoggerが指定されています。Propagate to parent(s)プロパティがOnになっているので、このLogger COMPのログ出力はParent Loggerプロパティで指定したop.TDResources.TDAppLoggerにも出力されます。

Discussion