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

如何通过logback.xml从Jar包资源中为Google LoggingAppender提供凭据?

解决Jar包中加载Logback Google Cloud凭据的问题

核心问题

credentialsFile参数要求的是文件系统的绝对/相对路径,但打包后资源文件嵌入Jar包内,无法作为独立文件被访问,因此需要改用支持从classpath加载凭据的配置方式。

修改后的Logback配置

将原配置中的<credentialsFile>替换为<credentialsSource>组合配置,指定从classpath读取凭据文件:

<appender name="cloud" class="com.google.cloud.logging.logback.LoggingAppender">
    <projectId>myproject</projectId>
    <!-- 替换credentialsFile,指定从classpath加载凭据的来源类型 -->
    <credentialsSource>com.google.cloud.logging.Logging$CredentialsSource.CLASSPATH</credentialsSource>
    <!-- 填写Jar包内的资源相对路径,对应原src/jvmMain/resources下的路径 -->
    <credentialsPath>secrets/logging-access.json</credentialsPath>
    <log>projects/myproject/logs/backend</log>
    <flushLevel>WARN</flushLevel>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

关键说明

  • credentialsSource指定为CLASSPATH类型,告知Appender从应用classpath中读取凭据资源
  • credentialsPath为资源在classpath中的相对路径:原文件放在src/jvmMain/resources/secrets/下,打包后会直接位于classpath的secrets/目录下,因此路径写secrets/logging-access.json即可
  • 常规构建工具(Gradle/Maven)默认会将src/jvmMain/resources下的文件打包到Jar的classpath根目录,无需额外配置

备选方案(环境变量/JVM参数)

如果不想在配置文件中硬编码路径,也可以通过启动参数传递:

  • 启动应用时添加JVM参数:-Dgoogle.application.credentials=classpath:secrets/logging-access.json,此时可保留原credentialsFile配置,但更推荐第一种classpath专属配置方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:07:17