在 Java 应用中记录应用事件

Java Bookshelf 教程的这一部分介绍应用如何整合详细的日志记录以帮助检测、调试和监控潜在问题。

本教程由多个页面组成,本页面是其中之一。要从头开始阅读并查看设置说明,请参阅 Java Bookshelf 应用

在本地机器上运行应用

要在本地运行应用,请执行以下操作:

  1. getting-started-java/bookshelf-standard/5-logging 目录中,输入以下命令以启动本地网络服务器:

    mvn package appengine:run -Dbookshelf.bucket=[YOUR-BUCKET]
    [YOUR-BUCKET] 替换为您的存储分区名称。
  2. 在网络浏览器中,转到 http://localhost:8080

将应用部署到 App Engine 标准环境

要部署到 App Engine 标准环境,请执行以下操作:

  1. 要创建将上传到书架应用的数据存储区索引,请至少创建一本图书,然后点击我的图书。请注意,使用 clean 命令构建应用会删除该本地索引,因此请在要部署的应用构建中执行此操作。
  2. getting-started-java/bookshelf-standard/5-logging 目录中,输入以下命令以部署应用:
  3. mvn appengine:deploy -Dappengine.appId=[YOUR-PROJECT-ID] -Dappengine.version=[YOUR-VERSION] -Dbookshelf.bucket=[YOUR-BUCKET].appspot.com
    将 [YOUR-PROJECT-ID] 替换为您的项目 ID,并将 [YOUR-VERSION] 替换为您的版本(例如 12)或您想要使用的其他某个字符串值。
  4. 在网络浏览器中,输入以下网址:

    https://PROJECT_ID.REGION_ID.r.appspot.com

    替换以下内容:

更新应用后,您可以通过以下方式重新部署更新后的版本:输入您在首次部署应用时使用的命令,并指定相同的项目 ID 和版本。这将覆盖当前部署的应用。如果您在更新的命令行中指定了不同的版本字符串,则新部署将为您的应用创建一个新版本,并将其晋升为当前服务版本。

您可以将应用的非服务版本删除,以减少费用。

要删除应用版本,请执行以下操作:

  1. 在 Cloud Console 中,转到 App Engine 的版本页面。

    转到“版本”页面

  2. 选中要删除的非默认应用对应的复选框。
  3. 点击删除 以删除应用版本。

如需全面了解如何清理可计费资源,请参阅本教程最后一步中的清理部分。

查看日志

当书架应用运行时,它会写入收集且在 Cloud Console 中提供的日志记录数据。您可以使用 Cloud Console 中的日志监控工具直接分析日志。如果您想进行更详细的分析,可以使用 Cloud Console 将应用日志流式传输或导入到 BigQuery 中,或将其导出到 Cloud Storage 存储分区中。

Cloud Console 中的日志记录

应用结构

下图显示了应用在部署到 App Engine 标准环境后如何处理日志记录。

日志记录示例结构 - App Engine 标准环境

了解代码

有许多与 App Engine 标准环境兼容的 Java 日志记录软件包。此示例使用 java.util.logging,因为它是最容易理解的。每个类都需要一个按以下方式进行实例化的 Logger

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

log 方法采用级别值和字符串(如需了解详情,请参阅 Java 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 会自动收集应用日志,可以在 Cloud Console 的日志查看器中查看、搜索和导出应用日志。

在此示例中,所有日志均被写入 stderr/stdout

清理

为避免因本教程中使用的资源而导致您的 Google Cloud Platform 帐号产生费用,请执行以下操作:

删除项目

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

要删除项目,请执行以下操作:

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除应用的非默认版本

如果您不想删除项目,可以通过删除应用的非默认版本来降低费用。

要删除应用版本,请执行以下操作:

  1. 在 Cloud Console 中,转到 App Engine 的版本页面。

    转到“版本”页面

  2. 选中要删除的非默认应用对应的复选框。
  3. 点击删除 以删除应用版本。

删除您的 Cloud Storage 存储分区

要删除 Cloud Storage 存储分区,请执行以下操作:

  1. 在 Cloud Console 中,转到 Cloud Storage 浏览器页面。

    转到“Cloud Storage 浏览器”页面

  2. 点击要删除的存储分区对应的复选框。
  3. 如需删除存储分区,请点击删除

后续步骤