Ведение журнала с использованием Logback на Spark StandAlone - PullRequest
0 голосов
/ 09 мая 2019

Мы используем 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"

Вот файл конфигурации (бит ансибилизированный), проверил фактические пути и они существуют, любая идея, что может быть проблемой в кластере. Я проверил переменные окружения в Spark UI, и они отражают то же самое для параметров drvier и executor.

Есть ли потенциальные проблемы с Logback и Spark StandAlone вместе?

Здесь нет ничего конкретного для файла конфигурации, он просто фильтрует данные для регистрации в json и файла для лучшей визуализации на сервере журналов

<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") &amp;&amp;
                    message.contains("logLevel") &amp;&amp;
                    message.contains("sourceLocation") &amp;&amp;
                    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>

1 Ответ

0 голосов
/ 08 июня 2019

Нам не удалось заставить Logback работать с Spark, так как Spark использует Log4J внутри, нам пришлось переключиться на тот же

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...