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

Databricks集群配置log4j2 Loki Appender导日志失败求助

问题:Databricks集群Log4j2 Loki Appender类找不到排查

尝试通过tjahzi的Log4j2 Appender将Databricks集群日志发送至Loki实例,已执行以下操作:

  • 添加初始化脚本,修改driver和executor的log4j2.xml文件;
  • 在集群配置的库标签页添加Maven库,日志显示已成功下载安装;
  • 执行echo "" >> log4j2.xml触发配置重载,等待30秒后仍报错。

集群标准输出错误如下:

ERROR Error processing element Loki ([Appenders: null]): CLASS_NOT_FOUND
ERROR Unable to locate appender "Loki" for logger config "root"

已尝试的排查操作:

  1. 给Loki Appender配置添加完整类名,替换原配置:
    原配置:
    <Loki name="Loki" bufferSizeMegabytes="64">
    
    修改后:
    <Loki name="Loki" class="pl.tkowalcz.tjahzi.log4j2.LokiAppender" bufferSizeMegabytes="64">
    
    错误依旧。
  2. 执行find /databricks -name '*log4j2-appender-nodep*' -type f,未找到相关文件。
  3. 手动下载jar文件上传至DBFS,再作为JAR库安装:
    $ databricks fs cp local/log4j2-appender-nodep-0.9.23.jar dbfs:/Shared/log4j2-appender-nodep-0.9.23.jar
    $ databricks libraries install --cluster-id 1-2-345 --jar "dbfs:/Shared/log4j2-appender-nodep-0.9.23.jar"
    
    错误仍未解决。

确认Loki实例连通性正常:通过curl从集群向Loki发送日志,Grafana界面可正常查看:

ds=$(date +%s%N) && \
echo $ds && \
curl -v -H "Content-Type: application/json" -XPOST -s "http://loki.atops.abc.com:3100/loki/api/v1/push" --data-raw '{"streams": [{ "stream": { "foo": "bar2", "system": "abc" }, "values": [ [ "'$ds'", "'$ds': testing, testing" ] ] }]}'

以下是初始化脚本执行后的driver端log4j2.xml配置内容:

<?xml version="1.0" encoding="UTF-8"?><Configuration monitorInterval="30" status="INFO" packages="pl.tkowalcz.tjahzi.log4j2, com.databricks.logging" shutdownHook="disable">
  <Appenders>
    <Loki name="Loki" bufferSizeMegabytes="64">
      <host>loki.atops.abc.com</host>
      <port>3100</port>

      <ThresholdFilter level="ALL"/>
      <PatternLayout>
        <Pattern>%X{tid} [%t] %d{MM-dd HH:mm:ss.SSS} %5p %c{1} - %m%n%exception{full}</Pattern>
      </PatternLayout>

      <Header name="X-Scope-OrgID" value="ABC"/>
      <Label name="server" value="Databricks"/>
      <Label name="foo" value="bar"/>
      <Label name="system" value="abc"/>

      <LogLevelLabel>log_level</LogLevelLabel>
    </Loki>

    <RollingFile name="publicFile.rolling" fileName="logs/log4j-active.log" filePattern="logs/log4j-%d{yyyy-MM-dd-HH}.log.gz" immediateFlush="true" bufferedIO="false" bufferSize="8192" createOnDemand="true">
      <Policies>
        <TimeBasedTriggeringPolicy/>
      </Policies>
      <PatternLayout pattern="%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex"/>
    </RollingFile>
    
    ---snip---

  </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="Loki"/>
      <AppenderRef ref="publicFile.rolling.rewrite"/>
    </Root>
    <Logger name="privateLog" level="INFO" additivity="false">
      <AppenderRef ref="privateFile.rolling.rewrite"/>
    </Logger>
    ---snip---
    
  </Loggers>
</Configuration>

请求帮忙排查类找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:05:29