本部分提供了使用 Azure CLI 生成结尾日志的示例。 为了避免重复指定资源组和服务实例名称,请使用以下命令设置默认资源组名称和群集名称:
az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>
以下示例中省略了资源组和服务名。
查看具有单个实例的应用的结尾日志
如果名为 auth-service
的应用只有一个实例,则可以使用以下命令查看该应用实例的日志:
az spring app logs --name <application-name>
该命令会返回类似于以下示例的日志,其中 auth-service
是应用程序名称。
...
2020-01-15 01:54:40.481 INFO [auth-service,,,] 1 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-01-15 01:54:40.482 INFO [auth-service,,,] 1 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.22]
2020-01-15 01:54:40.760 INFO [auth-service,,,] 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/uaa] : Initializing Spring embedded WebApplicationContext
2020-01-15 01:54:40.760 INFO [auth-service,,,] 1 --- [main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 7203 ms
...
查看具有多个实例的应用的结尾日志
如果名为 auth-service
的应用具有多个实例,则可以使用 -i/--instance
选项查看实例日志。
首先,运行以下命令以获取应用实例名称:
az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table
该命令生成类似于以下输出的结果:
Name Status DiscoveryStatus
------------------------------------------- -------- -----------------
auth-service-default-12-75cc4577fc-pw7hb Running UP
auth-service-default-12-75cc4577fc-8nt4m Running UP
auth-service-default-12-75cc4577fc-n25mh Running UP
然后,可以使用 -i/--instance
选项来流式传输应用实例日志,如下所示:
az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb
还可以从 Azure 门户获取应用实例的详细信息。 在 Azure Spring Apps 服务的左侧导航窗格中选择“应用”之后,选择“应用实例”。
连续流式传输新日志
默认情况下,az spring app logs
仅打印流式传输到应用控制台的现有日志,然后退出。 如果要流式处理新日志,请如以下示例所示添加 -f/--follow
参数:
az spring app logs --name auth-service --follow
使用 --follow
参数来跟踪即时日志时,Azure Spring Apps 日志流式处理服务每分钟向客户端发送一次检测信号日志,除非应用程序不断写入日志。 检测信号日志消息使用以下格式:2020-01-15 04:27:13.473: No log from server
。
使用以下命令检查所有受支持的日志记录选项:
az spring app logs --help
注意
若要设置 JSON 结构化日志的格式,需要 spring 扩展 2.4.0 版本或更高版本。
结构化应用程序日志以 JSON 格式显示,可能难以读取。 可以使用 --format-json
参数将 JSON 格式的日志格式化为更可读的格式。 有关详细信息,请参阅 Azure Spring Apps 的结构化应用程序日志。
以下示例显示了如何使用 --format-json
参数:
# Raw JSON log
$ az spring app logs --name auth-service
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Disable delta property : false"}
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Single vip registry refresh property : null"}
# Formatted JSON log
$ az spring app logs --name auth-service --format-json
2021-05-26T03:35:27.533Z INFO [ main] com.netflix.discovery.DiscoveryClient : Disable delta property : false
2021-05-26T03:35:27.533Z INFO [ main] com.netflix.discovery.DiscoveryClient : Single vip registry refresh property : null
--format-json
参数还接受使用格式字符串语法的可选自定义格式。 有关详细信息,请参阅格式字符串语法。
以下示例显示了如何使用格式字符串语法:
# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null
使用的默认格式为:
{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}