【发布时间】:2015-09-18 10:48:35
【问题描述】:
我制作了一个非常标准的 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 建议 here 但没有任何区别。
编辑
我打开了一个new question on SO,关于如何使用属性配置器使其工作,我将其保持打开状态,因为它是关于使用 ConfigFactory。
【问题讨论】:
-
你能检查一下jar中的文件名吗?是
log4j-executor.properties还是log4j.properties?我很困惑,因为您在问题中使用了两个不同的文件名。
标签: scala apache-spark log4j typesafe-config