java - 在 Spark StandAlone 上使用 Logback 进行日志记录
问题描述
我们正在使用Spark StandAlone 2.3.2 and logback-core/logback-classic with 1.2.3
有非常简单的 Logback 配置文件,它允许我们将数据记录到特定目录,并且在本地我可以从编辑器传递 vm 参数
-Dlogback.configurationFile="C:\path\logback-local.xml"
它可以正常工作并记录
在 Spark StandAlone 上,我正在尝试使用外部链接传递参数
spark-submit
--master spark://127.0.0.1:7077
--driver-java-options "-Dlog4j.configuration=file:/path/logback.xml"
--conf "spark.executor.extraJavaOptions=-Dlogback.configurationFile=file:/path/logback.xml"
这是配置文件(位 ansibilized),已经验证了实际路径并且它们存在,任何想法可能是集群上的问题。我已经验证了 Spark UI 上的环境变量,它们反映了 drvier 和 executor 选项的相同。
Logback 和 Spark StandAlone 一起使用的任何潜在问题?
这里没有特定于配置文件的内容,它只是过滤 json 日志记录 vs 文件的数据,以便在日志服务器上更好地可视化
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>{{ app_log_file_path }}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--daily-->
<fileNamePattern>{{ app_log_dir }}/{{ app_name }}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>90</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d [%thread] %-5level %logger{36} %X{user} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE_JSON" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>
return message.contains("timeStamp") &&
message.contains("logLevel") &&
message.contains("sourceLocation") &&
message.contains("exception");
</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>NEUTRAL</OnMatch>
</filter>
<file>{{ app_json_log_file_path }}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--daily-->
<fileNamePattern>{{ app_log_dir }}/{{ app_name }}_json.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>90</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<logger name="com.baml.ctrltech.greensheet.logging.GSJsonLogging" level="info" additivity="false">
<appender-ref ref="FILE_JSON" />
</logger>
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="FILE_JSON"/>
</root>
</configuration>
解决方案
我们无法让 Logback 与 Spark 一起工作,因为 Spark 在内部使用 Log4J,我们必须切换到相同的
推荐阅读
- sql - CASE 条件和 SUM() 公用表表达式或 Group By
- oracle - 如何通过 Apache NiFi 提高从 Oracle 到 IBM DB2 的批量插入速度
- python - 如何进入 tktinker 中的另一个窗口并销毁前一个窗口
- html - 如何在 dart html 中创建自定义元素
- json - Swift:在结构中具有 Encodable 一致性的自定义键值编码
- python - AttributeError:“Bot”对象没有属性“pin_message”
- jib - 有没有办法自定义 jib 添加的 extraDirectories 的所有者?
- vba - VBA 单击 MS Access 应用程序按钮
- tfs - VSTS Build 不生成最新的二进制文件
- plot - 如何在 X 轴(左截断数据)上绘制相对于一般人群的生存率?