如何将Java Spring Boot应用日志接入Azure门户并配置告警
问题解决指南
核心问题梳理
- 部署在Azure App Service Tomcat环境的Spring Boot WAR应用,log4j2生成的
spring.log仅能在KUDU编辑器中查看,Azure门户的App Service日志面板无法显示日志内容,仅能看到文件的创建/更新/删除记录 - 本地IDE可见的应用控制台输出,在Azure端无法找到
- 已开启诊断设置并将日志发送至Log Analytics工作区,但无法查询到日志实际内容
- 需求:在Azure门户查看日志内容,为特定异常配置告警
解决方案步骤
1. 修正web.config配置错误
你的web.config中httpPlatform的arguments参数里,WAR包名存在语法错误:my-application=name.war应为my-application-name.war(等号属于输入错误)。错误的包名会导致应用启动异常,进而影响日志采集。修正后的配置片段:
<httpPlatform processPath="%JAVA_HOME%\bin\java.exe" arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar "%HOME%\site\wwwroot\my-application-name.war""> </httpPlatform>
2. 配置log4j2将日志输出到标准流
Azure App Service的日志采集系统默认监听应用的标准输出(stdout)和标准错误(stderr),而非自定义日志文件。要让日志在门户可见,需修改log4j2配置,添加ConsoleAppender:
<!-- log4j2.xml 示例配置 --> <Configuration status="INFO"> <Appenders> <!-- 保留原有文件输出配置 --> <RollingFile name="FileAppender" fileName="${sys:user.dir}/logs/spring.log" filePattern="${sys:user.dir}/logs/spring-%d{yyyy-MM-dd}-%i.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> <Policies> <SizeBasedTriggeringPolicy size="10MB"/> </Policies> <DefaultRolloverStrategy max="10"/> </RollingFile> <!-- 添加ConsoleAppender,将日志输出到标准输出流 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <!-- 添加ConsoleAppender,将错误日志输出到标准错误流 --> <Console name="ConsoleError" target="SYSTEM_ERR"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="FileAppender"/> <AppenderRef ref="Console"/> <AppenderRef ref="ConsoleError"/> </Root> </Loggers> </Configuration>
配置完成后,日志会同时写入文件和标准流,Azure门户的日志流和应用日志面板就能直接查看内容。
3. 确认App Service日志采集功能已开启
进入Azure门户的App Service资源 → 监控 → 日志流,确认以下设置:
- 应用日志文件和控制台日志已开启,日志级别设置为合适等级(如Info或Debug)
- 若使用Tomcat容器,需开启Web服务器日志,确保Tomcat的访问日志和错误日志也能被采集
4. 确保Log Analytics能正常采集日志
开启诊断设置后,需确认日志类别选择正确:
- 进入App Service资源 → 监控 → 诊断设置
- 勾选AppServiceAppLogs(应用日志)、AppServiceConsoleLogs(控制台日志)、AppServiceHTTPLogs(Web服务器日志)等类别,并发送至目标Log Analytics工作区
- 日志同步到Log Analytics需要几分钟时间,等待后可使用以下Kusto查询语句检索:
AppServiceAppLogs | where TimeGenerated > ago(1h) | project TimeGenerated, Level, Message
5. 配置异常告警
当日志能在Log Analytics中正常查询后,可配置告警规则:
- 进入Log Analytics工作区 → 警报 → 创建警报规则
- 选择自定义日志查询,输入筛选特定异常的语句(例如:
AppServiceAppLogs | where Message contains "NullPointerException") - 设置触发条件(如5分钟内出现1次),并配置通知方式(邮件、短信等)
内容的提问来源于stack exchange,提问作者Anthony Doban
相关产品推荐
相关产品推荐

