Здравствуйте. Я являюсь частью команды, которая разрабатывает потоковое приложение Spark. Существует также много логики кода вне потоковой части. Для всего приложения, потокового или нет, мы используем slf4j для ведения журнала. У нас также есть собственный пользовательский журнал приложений.
У нас никогда не было журналирования внутри потоковой части Spark, но теперь у нас есть необходимость добавить логирование к нему. Тем не менее, любая регистрация (например, logger.info ())
inside stream.foreachRDD () никогда не отображается в нашем журнале.
После прочтения я обнаружил, что org.apache.log4j.Logger не сериализуем.
Поэтому я добавил следующий код:
@transient lazy val logger2: Logger = Logger.getLogger(this.getClass)
с "Logger", являющимся регистратором вне любой потоковой логики.
Я также попробовал LogManager.getLogger (), но результат тот же -
любая запись через "logger" не отображается в нашем выводе регистрации, как будто этого кода регистрации вообще нет.
Мой вопрос, как правильно потоковому приложению Spark использовать Log4j для входа?
спасибо