Java でアプリケーション イベントをロギングする

Java 用の Bookshelf のチュートリアルのこのパートでは、アプリに詳細なロギングを組み込んで、潜在的な問題の検出、デバッグ、モニタリングを行いやすくする方法について説明します。

このページは、複数ページにわたるチュートリアルの一部です。最初からの説明や設定手順を確認するには、Java Bookshelf アプリに移動してください。

ローカルマシンでのアプリの実行

アプリをローカルで実行するには:

  1. getting-started-java/bookshelf/5-logging ディレクトリで次のコマンドを入力し、ローカル ウェブサーバーを起動します。

    mvn -Plocal clean jetty:run-exploded -DprojectID=[YOUR-PROJECT-ID]
  2. ウェブブラウザで http://localhost:8080 に移動します。

App Engine フレキシブル環境へのアプリのデプロイ

  1. 次のコマンドを入力してアプリをデプロイします。

    mvn appengine:deploy -DprojectID=YOUR-PROJECT-ID
    
  2. ウェブブラウザで、次のアドレスを入力します。[YOUR_PROJECT_ID] は実際のプロジェクト ID で置き換えます。

    https://[YOUR_PROJECT_ID].appspot-preview.com
    

アプリを更新する場合は、最初にデプロイしたときと同じコマンドを使って、更新バージョンをデプロイできます。デプロイを行うと、アプリの新しいバージョンが作成され、それがデフォルトのバージョンに設定されます。古いバージョンはそのまま残り、関連付けられた VM インスタンスも同様に残ります。すべてのアプリ バージョンと VM インスタンスが課金対象のリソースとなるのでご注意ください。

アプリのデフォルト以外のバージョンを削除することで、コストを削減できます。

アプリのバージョンを削除する手順は次のとおりです。

  1. GCP Console の [App Engine のバージョン] ページに移動します。

    [バージョン] ページに移動

  2. 削除したい、デフォルト以外のアプリのバージョンの横にあるチェックボックスをクリックします。
  3. ページの上部にある [削除] をクリックし、アプリのバージョンを削除します。

課金対象のリソースをクリーンアップする方法の詳細については、このチュートリアルの最後のステップにあるクリーンアップ セクションを参照してください。

ログの表示

Bookshelf アプリを実行すると、収集したログデータが書き込まれ、GCP Console に表示されます。GCP Console のログ モニタリング ツールを使うと、ログを直接分析できます。詳細な分析が必要な場合は、GCP Console を使用してアプリのログを BigQuery にストリーミングまたはインポートするか、Cloud Storage バケットにエクスポートします。

コンソールのロギング表示

アプリケーションの構造

次の図は、アプリを App Engine フレキシブル環境にデプロイした場合のロギングの処理を示しています。

ログサンプルの構造 - App Engine フレキシブル環境

次の図は、アプリを Google Compute Engine にデプロイした場合のロギングの処理を示しています。Google Compute Engine については、このチュートリアルの最後のステップで説明します。

ログサンプルの構造 - Compute Engine

コードを理解する

App Engine フレキシブル環境と互換性のある Java ロギング パッケージは多数あります。このサンプルでは、わかりやすい java.util.logging を使用しています。次のように、クラスごとに Logger のインスタンス化が必要です。

private final Logger logger = Logger.getLogger(ReadBookServlet.class.getName());

log メソッドは、Level と 1 つの文字列を受け入れます。Level には FINESTFINERFINECONFIGINFOWARNINGSERVERE のいずれかの値を指定できます。あるいは configinfowarningsevere のいずれかのショートカット メソッドを使ってログを記録することもできます。

logger.log(Level.INFO, "Read book with id {0}", id);

ロギングレベルはプロパティ ファイルから設定することが多いですが、app.yaml で設定したり変更したりすることもできます。

env_variables:    # Logging options
  JAVA_OPTS: >-
    -D.level=INFO

ロギング設定を理解する

サンプルアプリを App Engine フレキシブル環境で実行すると、stderrstdout にロギングされた内容はすべて Cloud Logging によって自動的に収集され、GCP Console のログビューアで表示、検索、エクスポートできるようになります。

このサンプルでは、すべてのログは stderrstdout に書き込まれます。

クリーンアップ

このチュートリアルで使用するリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

プロジェクトの削除

課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除する手順は次のとおりです。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

アプリのデフォルト以外のバージョンの削除

プロジェクトを削除しない場合、アプリのデフォルト以外のバージョンを削除すると、コストを抑えることができます。

アプリのバージョンを削除する手順は次のとおりです。

  1. GCP Console の [App Engine のバージョン] ページに移動します。

    [バージョン] ページに移動

  2. 削除したい、デフォルト以外のアプリのバージョンの横にあるチェックボックスをクリックします。
  3. ページの上部にある [削除] をクリックし、アプリのバージョンを削除します。

Cloud Storage バケットの削除

Cloud Storage バケットを削除する手順は次のとおりです。

  1. GCP Console で、Cloud Storage ブラウザページに移動します。

    Cloud Storage ブラウザページに移動

  2. 削除したいバケットの隣にあるチェックボックスをクリックします。
  3. ページの上部にある [削除] をクリックし、バケットを削除します。

次のステップ

Java Bookshelf サンプルを Compute Engine で実行する方法について学習する。

App Engine スタンダード環境で Java を使用する方法について学習する。

Google Cloud Platform のその他の機能を試す。チュートリアルをご覧ください。

このページは役立ちましたか?評価をお願いいたします。