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

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

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

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

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

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

    mvn -Plocal clean appengine:devserver -Dbookshelf.bucket=[YOUR-BUCKET]
    [YOUR_BUCKET] は、使用するバケット名に置き換えてください。
  2. ウェブブラウザで http://localhost:8080 に移動します。

App Engine スタンダード環境へのアプリのデプロイ

アプリを App Engine スタンダード環境にデプロイするには:

  1. Bookshelf アプリケーションのローカルでの演習を完了します。特に、少なくとも 1 つの書籍を作成して [My Books] をクリックしておきます。これにより、Bookshelf とともにアップロードされる、必要な Cloud Datastore のインデックスが作成されます。clean を使用してアプリケーションをビルドすると、そのローカル インデックスが削除されます。したがって、デプロイするアプリケーションのビルドでは必ずこの作業を行ってください。
  2. getting-started-java/bookshelf-standard/5-logging ディレクトリで、次のコマンドを入力してアプリをデプロイします。
    mvn appengine:update -Dappengine.appId=[YOUR-PROJECT-ID] -Dappengine.version=[YOUR-VERSION] -Dbookshelf.bucket=[YOUR-BUCKET].appspot.com
    [YOUR-PROJECT-ID] を実際のプロジェクト ID に、[YOUR-VERSION] を実際のバージョン(12 などの文字列値)に置き換えます。
  3. ウェブブラウザに次のアドレスを入力します。
    https://[YOUR-PROJECT-ID].appspot.com
    [YOUR-PROJECT-ID] を実際のプロジェクト ID に置き換えます。

アプリを更新した場合は、最初にデプロイしたときと同じコマンドを使って更新バージョンを再デプロイできます。同じプロジェクト ID とバージョンを指定することにより、現在デプロイされているアプリが上書きされます。更新の際に別のバージョン文字列を指定すると、アプリの新しいバージョンが作成されて、それが現在の提供バージョンに昇格されます。

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

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

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

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

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

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

ログの表示

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

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

アプリケーションの構造

次の図は、アプリを App Engine スタンダード環境にデプロイした場合のロギングの処理を表しています。

ログサンプルの構造 - App Engine スタンダード環境

コードを理解する

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

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

log メソッドは、Level 値と 1 つの文字列を受け入れます(詳しくは Java の Level をご覧ください)。Level に指定できる値は次のとおりです。

あるいは configinfowarningsevere のいずれかのショートカット メソッドを使ってログを記録することもできます。

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

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

# A default java.util.logging configuration.
# (All App Engine logging is through java.util.logging by default).

# Set the default logging level for all loggers to INFO
.level = INFO
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format = [%1$tc] %4$s: %2$s - %5$s %6$s%n

ロギング設定を理解する

サンプルアプリを App Engine スタンダード環境で実行すると、アプリケーション ログは 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. ページの上部にある [削除] ボタンをクリックし、バケットを削除します。

次のステップ

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

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

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