You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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 &quot;%HOME%\site\wwwroot\my-application-name.war&quot;">
</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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:03:12