2 イベント・メタデータ

SetMetadataSample.javaの例では、com.oracle.Helloというイベントが定義され、注釈@Name@Description@Labelおよび@Categoryが設定されます。(このサンプルは、パッケージfrexamplesにあります。)

package frexamples;

import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Event;
import jdk.jfr.Label;
import jdk.jfr.Name;

public class SetMetadataSample {

    @Name("com.oracle.Hello")
    @Label("Set Metadata Example")
    @Description("Demonstrates how to set the annotations "
        + "@Name, @Description, @Label, and @Category")
    @Category({ "Demonstration", "Tutorial" })
    static class Hello extends Event {
        @Label("Message")
        String message;
    }

    public static void main(String... args) {
        Hello event = new Hello();
        event.begin();
        event.message = "Hello Event!";
        event.commit();
    }
}

この例がfrexamplesというディレクトリにあることを確認し、次のコマンドを使用して、このディレクトリからSetMetadataSampleを実行します:

java -XX:StartFlightRecording:filename=sm.jfr SetMetadataSample.java
jfr print --events Hello sm.jfr

最後のコマンドでは、次のような出力が表示されます:

com.oracle.Hello {
  startTime = 23:43:48.444
  duration = 0.0177 ms
  message = "Hello Event!"
  ...
}

jfr printコマンドを使用して、1つ以上のカテゴリに属すイベントをフィルタすることもできます:

jfr print --categories Demonstration sm.jfr

@Name注釈は、イベント・タイプのデフォルトの名前をオーバーライドします。たとえば、@Name注釈が設定されていない場合、この例で作成されるイベントのデフォルトの名前はfrexamples.SetMetadataSample$Helloになります。「イベントのネーミングのガイドライン」を参照してください。

@Descriptionおよび@Label注釈を使用すると、イベント・タイプに関する情報を追加できます。@Labelは識別子として使用しないでください。かわりに、@Name注釈を使用します。「イベントのラベル付けのガイドライン」を参照してください

@Category注釈を使用すると、イベント・タイプに1つ以上のカテゴリを関連付けられます。カテゴリを1つ指定する場合は、文字列を使用します。カテゴリを複数指定する場合は、文字列をカンマで区切ってリストにし、中カッコ({})で囲みます。「カテゴリ」を参照してください。