4.2. デバッグログ
Eclipse Vert.x は組み込みロギング API を提供します。Eclipse Vert.x のデフォルトのロギング実装は、Java JDK で提供される java.util.logging ライブラリーを使用します。Eclipse Vert.x では、Log4J (Eclipse Vert.x は Log4J v1 および v2 をサポート)、SLF4J などの異なるロギングフレームワークを使用できます。
4.2.1. java.util.logging を使用した Eclipse Vert.x アプリケーションのロギング設定 リンクのコピーリンクがクリップボードにコピーされました!
java.util.logging を使用して Eclipse Vert.x アプリケーションのデバッグロギングを設定するには、以下を実行します。
-
application.propertiesファイルにjava.util.logging.config.fileシステムプロパティーを設定します。この変数の値は、java.util.logging設定ファイル の名前に対応する必要があります。これにより、アプリケーションの起動時にLogManagerがjava.util.loggingを初期化できるようになります。 -
vertx-default-jul-logging.properties名を持つjava.util.logging設定ファイルを Maven プロジェクトのクラスパスに追加します。Eclipse Vert.x はこのファイルを使用して、アプリケーションの起動時にjava.util.loggingを設定します。
Eclipse Vert.x では、Log4J ライブラリー、Log4J2 ライブラリー、および SLF4J ライブラリーに事前実装を提供する LogDelegateFactory を使用してカスタムのロギングバックエンドを指定できます。デフォルトで Java に含まれる java.util.logging とは異なり、他のバックエンドでは各ライブラリーをアプリケーションの依存関係として指定する必要があります。
4.2.2. Eclipse Vert.x アプリケーションにログ出力を追加 リンクのコピーリンクがクリップボードにコピーされました!
ロギングをアプリケーションに追加するには、
io.vertx.core.logging.Loggerを作成します。Logger logger = LoggerFactory.getLogger(className); logger.info("something happened"); logger.error("oops!", exception); logger.debug("debug message"); logger.warn("warning");Importantロギングバックエンドは異なる形式を使用して、パラメーター化されたメッセージで置き換え可能なトークンを表します。パラメーター化されたロギングメソッドに依存すると、コードを変更せずにロギングバックエンドを切り替えることができません。
4.2.3. アプリケーションのカスタムロギングフレームワークの指定 リンクのコピーリンクがクリップボードにコピーされました!
Eclipse Vert.x で java.util.logging を使用しない場合は、io.vertx.core.logging.Logger を設定し、別のロギングフレームワークを使用するように設定します (例: Log4J または SLF4J)。
vertx.logger-delegate-factory-class-nameシステムプロパティーの値をLogDelegateFactoryインターフェイスを実装するクラスの名前に設定します。Eclipse Vert.x は、以下のライブラリーに事前ビルドされた実装を提供し、以下のように対応する事前定義されたクラス名を提供します。Expand ライブラリー クラス名 Log4Jv1io.vertx.core.logging.Log4jLogDelegateFactoryLog4Jv2io.vertx.core.logging.Log4j2LogDelegateFactorySLF4Jio.vertx.core.logging.SLF4JLogDelegateFactoryカスタムライブラリーを使用してロギングを実装する場合は、関連する
Log4Jjar またはSLF4Jjar がアプリケーションの依存関係に含まれていることを確認します。ImportantEclipse Vert.x で提供される Log4J v1 委譲は、パラメーター化されたメッセージに対応していません。Log4J v2 および SLF4J の委譲はどちらも
{}構文を使用します。java.util.logging委譲は、{n}構文を使用するjava.text.MessageFormatに依存します。
4.2.4. Eclipse Vert.x アプリケーション用の Netty ロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
Netty は、アプリケーション内の非同期ネットワーク通信を管理する VertX によって使用されるライブラリーです。
Netty:
- プロトコルサーバーやクライアントなど、ネットワークアプリケーションを迅速かつ簡単に開発できます。
- TCP や UDP ソケットサーバーの開発などのネットワークプログラミングを簡素化し、整備します。
- ブロックおよび非ブロッキング接続を管理する統合 API を提供します。
Netty は、システムプロパティーを使用して外部ロギング設定に依存しません。代わりに、プロジェクトの Netty クラスに表示されるロギングライブラリーに基づいてロギング設定を実装します。Netty は、以下の順序でライブラリーの使用を試みます。
-
SLF4J -
Log4J -
フォールバックオプションとしての
java.util.logging
アプリケーションの main メソッドの冒頭に以下のコードを追加すると、io.netty.util.internal.logging.InternalLoggerFactory を直接特定のロガーに直接設定できます。
// Force logging to Log4j
InternalLoggerFactory.setDefaultFactory(Log4JLoggerFactory.INSTANCE);
4.2.5. OpenShift でのデバッグログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを起動し、これと対話して OpenShift のデバッグステートメントを確認します。
前提条件
-
CLI クライアント
ocがインストールされ、認証されている。 - デバッグロギングが有効になっている Maven ベースのアプリケーション。
手順
アプリケーションを OpenShift にデプロイします。
$ mvn clean oc:deploy -Popenshiftログを表示します。
アプリケーションと共に Pod の名前を取得します。
$ oc get podsログ出力の監視を開始します。
$ oc logs -f pod/MY_APP_NAME-2-aaaaaログ出力を確認できるように、ターミナルウィンドウにログ出力が表示されます。
アプリケーションと対話します。
たとえば、次のコマンドは、
/api/greetingメソッドでmessage変数をログに記録するようにデバッグログが設定されている REST API レベル 0 アプリケーションの例に基づいています。アプリケーションのルートを取得します。
$ oc get routesアプリケーションの
/api/greetingエンドポイントで HTTP 要求を作成します。$ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
Pod ログのあるウィンドウに戻り、ログでデバッグロギングメッセージを検査します。
... Feb 11, 2017 10:23:42 AM io.openshift.MY_APP_NAME INFO: Greeting: Hello, Sarah ...-
デバッグロギングを無効にするには、ロギング設定ファイル (例:
src/main/resources/vertx-default-jul-logging.properties) を更新し、クラスのロギング設定を削除し、アプリケーションを再デプロイします。