Azure ApiApp 中的 Java 日志记录

标签 java azure logging

我需要一些有关 Azure 中 Java 应用程序日志记录的帮助:

1) 使用 Azure 作为 PaaS,我创建了一个配置为使用 Java8 + Tomcat8 的 API 应用程序。 我正在尝试使用 log4j2 来获取除 Tomcat 日志之外的应用程序日志记录(在单独的文件中)。 据我所知,我有权在 D:\home 内的任何位置写入。因此,我将尝试写入“d:\home\Logfiles\Application\”。 因此,我创建了一个带有 log4j2 的 Web 应用程序,该应用程序在我的本地 tomcat 中运行良好。 但是,当在 Azure 中运行相同的应用程序(具有正确的日志文件路径)时,我看不到任何日志。 我什至尝试按照 https://azure.microsoft.com/en-us/documentation/articles/web-sites-java-custom-upload/ 中的描述填写/site/wwwroot/web.config这样也没有日志。 如何在单独的文件中配置 Java 应用程序日志记录(无需将 tomcat 日志记录(JULI 记录器)更改为 log4j)?

2) 查看tomcat日志,我意识到WebApp的启动/停止/重新启动并不意味着tomcat的启动/停止/重新启动,所以我们无法控制它? 有人知道当我们在 Azure 门户中为基于 Web 容器的应用程序执行启动/停止/重新启动时会发生什么吗?

3) 集中多个 Web 应用程序的 Java 日志记录的最佳方法是什么?使用 log4j2 中的 JDBCAppender 或 JPAAppender?

提前致谢

最佳答案

据我所知,您有权在路径 D:\home\site\ 内的任何位置写入内容,但不在路径 D:\home\ 处我测试过的。所以我建议你可以尝试配置D:\home\site\里面的指定路径用于应用程序日志记录。

但是,为了日志记录持久性,我建议您可以尝试使用 Azure 表存储来进行应用程序日志记录。请参阅已回答的SO线程Using Azure Blob Storage with java MVC Azure Web Site要知道。

对于第二个问题,您可以使用 Process explorer Kudu 工具来检查 java通过 url https://<your-app-name>.scm.azurewebsites.net/ProcessExplorer/ 进行处理,请参见下图。当您停止应用程序时,java进程将被杀死。如果再次启动应用程序,您可以看到 java首次访问应用程序后的流程。

enter image description here

对于第三个问题,根据我的经验,我认为使用Azure Application Insights服务是最好的方法。同时,Azure Application Insights 通过 SDK 支持 Log4j2 。可以引用官方文档 Explore Java trace logs in Application Insights 了解如何开始。

关于Azure ApiApp 中的 Java 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36896329/

相关文章:

Azure REST API - 时间增量的 $filter 参数抛出 ProviderError

java - 在 Ubuntu 上记录 Tomcat6

logging - 如何截断 kubernetes pod 的日志?

java - 非空类成员字段的双重检查锁定

java - @Value 不注入(inject)属性,保持为空

node.js - 如何使用绑定(bind)更新 Azure 函数中的 Azure 表行?

javascript - 正则表达式匹配错误数据

java - 如何在 JAVA 中为 RSAPrivateKey 使用密码?

java - 解析字符串日期到日期

azure - 我应该在 Azure 文件存储中存储哪些文件?