Я сделал довольно стандартный файл log4j, я хотел бы загрузить и использовать его свойства, при этом он был упакован внутри jar приложения.
Используя свойства из java.util, я смог заставить его работать при запуске в режиме yarn-client, но с помощью typesafe-config на данный момент log4j.properties полностью игнорируется.
Это log4j.properties
log4j.rootLogger=INFO, RollingAppender
log4j.rootCategory=DEBUG, file
log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=log/rule.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1} %m%n
Вот как я получаю свойства. Это должно быть хорошо, так как другие свойства извлекаются правильно.
val log = LogManager.getRootLogger()
val logCfgProps : Config = ConfigFactory.load("log4j.properties")
val configLogProps = Option(getClass.getClassLoader.getResource("log4j.properties")).fold
{
log.error("log4j.properties file not retrieved. Application is shutting down")
ConfigFactory.load()
}
{ resource => ConfigFactory.load(logCfgProps)}
И я пытаюсь войти с
log.error("blabla")
На консоли я получаю правильный журнал, но он не записывается в файл. Я попытался добавить параметр --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties", предложенный myapp.jar здесь, но это не имеет никакого значения.
РЕДАКТИРОВАТЬ
Я открыл новый вопрос о SO о том, как использовать конфигуратор свойств, чтобы заставить его работать, я оставляю это открытым, поскольку речь шла об использовании ConfigFactory.
log4j-executor.properties
илиlog4j.properties
? Я смущен, потому что вы использовали два разных имени файла в своем вопросе. - person zsxwing   schedule 18.09.2015