MPS 2024.1 ヘルプ

ロギング

jetbrains.mps.baselanguage.logging 言語は、MPS ログとメッセージツールビューパネルに任意の情報を書き込むためのステートメントが含まれています。LogLowLevelStatement コンセプト (別名「ログエラー ...」) はシステムロガーを使用してログを記録するために使用され、MsgStatement (別名「メッセージエラー ...」) はメッセージツールウィンドウにログを記録するために使用されます。

log6.png

メッセージツールウィンドウは画面下部にあります。

messages_tool_window.png

MPS ログファイルはメニューを使ってすばやく移動することができます:

Locate_Logs.png

この言語は、さまざまな重大度のログメッセージをサポートしています。

  • トレース

  • 情報

  • デバッグ

  • 警告

  • エラー

  • 致命的

log ステートメントをコードに挿入したいときはいつでも、"log" か "message" のどちらかに続けて希望の重大度を入力することから始めます。

log1.png

完了すると、空のメッセージを含むログステートメントが挿入されます。

log2.png

重大度はいつでも変更できます。

log3.png

log ステートメントは、指定される例外もサポートしています。

log4.png

MsgStatement には、プロジェクトを指定するための追加のパラメーターが含まれています。

log5.png

MPS で複数のプロジェクトが同時に開かれている場合、各プロジェクトには独自の MPS ウィンドウ (フレーム) が与えられ、独自のメッセージビューも与えられます。プロジェクトパラメーターは、適切なプロジェクトのメッセージウィンドウにログメッセージを出力するために使用されます。パラメーターを空のままにすると、メッセージは開いているすべてのプロジェクトのメッセージツールビューに記録されます。

現在のプロジェクトオブジェクトの取得

現在のプロジェクトを表すオブジェクトを取得するのは少々難しいです。さらに悪いことに、Project クラスとインターフェースは複数存在し、それぞれが異なる状況で使用されます。

  • com.intellij.openapi.project.Project - プラットフォームからのインターフェース

  • org.jetbrains.mps.openapi.Project - MPS のインターフェース

  • jetbrains.mps.project.Project - org.jetbrains.mps.openapi.Project インターフェースを実装する MPS の抽象クラス

  • jetbrains.mps.project.MPSProject - jetbrains.mps.project.Project の具体的なサブクラスの 1 つ

  • jetbrains.mps.ide.project.ProjectHelper - 便利な変換ユーティリティクラス

ログ言語のステートメントでは、org.jetbrains.mps.openapi.Project のインスタンスが想定されます。つまり、jetbrains.mps.project.Project クラスまたはその jetbrains.mps.project.MPSProject サブクラスも許可されます。プラットフォーム com.intellij.openapi.project.Project インターフェースは許可されませんが、jetbrains.mps.ide.project.ProjectHelper を使用して、プラットフォームと MPS 固有のプロジェクトオブジェクト間の変換を行うことができます。

MPSProject p = ProjectHelper.fromIdeaProject(ideaProject);

たとえば、アクションなどの一部の要素は、パラメーターとしてプロジェクトを取得します。editorContext または genContext のいずれかが使用可能なその他の場所では、jetbrains.mps.ide.project.ProjectHelper を使用してリポジトリからプロジェクトを解決できます。

Project project = ProjectHelper.getProject(editorContext.getRepository()); message warn "I'm warning you!", <no hint>, project, <no throwable>;