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

Spring AI中ChatClient配置SimpleLoggerAdvisor无日志的问题排查

问题排查方案

1. 修复Advisor配置的语法错误

你的Kotlin代码中,defaultAdvisors方法的两个参数间缺少逗号,这会导致SimpleLoggerAdvisor无法被正确注册到ChatClient的Advisor链中:

@Bean
fun chatClient(builder: ChatClient.Builder, vectorStore: VectorStore): ChatClient = builder
   .defaultAdvisors(
      QuestionAnswerAdvisor(vectorStore, SearchRequest.defaults()), // 添加逗号分隔参数
      SimpleLoggerAdvisor()
   )
   .build()

Kotlin要求多参数函数的参数必须用逗号分隔,否则会被解析为单个表达式,导致第二个Advisor未生效。

2. 确认日志配置的有效性

虽然你配置了logging.level.org.springframework.ai.chat.client.advisor: DEBUG,但需确保日志框架(如Logback、Log4j2)的控制台输出允许DEBUG级别日志。比如使用Logback时,需检查logback-spring.xml中控制台Appender的阈值设置:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level> <!-- 确保阈值不高于DEBUG -->
    </filter>
</appender>

3. 调整Advisor执行顺序

Advisor按注册顺序执行,若QuestionAnswerAdvisor提前终止请求流程,SimpleLoggerAdvisor可能无法触发。可将日志Advisor放在第一位,确保它能捕获完整的请求/响应:

@Bean
fun chatClient(builder: ChatClient.Builder, vectorStore: VectorStore): ChatClient = builder
   .defaultAdvisors(
      SimpleLoggerAdvisor(),
      QuestionAnswerAdvisor(vectorStore, SearchRequest.defaults())
   )
   .build()

4. 验证Advisor的触发逻辑

尝试手动指定Advisor调用,排查是否是全局注册的问题:

val prompt = promptService.createPrompt(userQuery, userType)
val response = chatClient.prompt(prompt)
    .advisors(SimpleLoggerAdvisor()) // 手动添加日志Advisor
    .call()

如果此方式能输出日志,说明全局Advisor的注册仍存在问题,需重新检查Bean配置。

内容的提问来源于stack exchange,提问作者stardust

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:51:05