- IDEA中,将配置文件命名为
log4j.properties
(该命名才会被自动加载), 并放到某个目录下(通常放到resources目录),并在resources上右键,找到Mark Directory as 选中Resources Root(如果时test目录中,就选中Test Resources Root)。
- 跑src下的程序会使用resources下的配置文件
- 跑test的会先从test resource里找,找不到去resources里找,再找不到抛异常
- 任意命名,在程序中人为指定配置文件目录:
import org.slf4j.LoggerFactory
import org.apache.log4j.PropertyConfigurator
val path="D:\\git\\mytest\\src\\test\\resources\\log4j-test.properties"
private val LOGGER = LoggerFactory.getLogger(this.getClass)
PropertyConfigurator.configure(path)
- 如上述这样初始化有点繁琐,因为一般一个java工程一个log4j 配置文件就够了,所以我们在运行java主程序的时候通过附加参数可以实现该功能,如下:
-Dlog4j.configuration=file:{path to file}
export executorJavaOpts=$(cat ${SPARK_HOME}/conf/spark-defaults.conf | grep "spark.executor.extraJavaOptions"|sed 's/-Dlog4j\.configuration=\.\/log4j-executor\.properties/-Dlog4j\.configuration=\.\/log4j-test-executor\.properties/')
export driverJavaOpts=$(cat ${SPARK_HOME}/conf/spark-defaults.conf | grep "spark.driver.extraJavaOptions"|sed 's/-Dlog4j\.configuration=file:\/home\/Spark2x\/spark\/conf\/log4j\.properties/-Dlog4j\.configuration=file:\/home\/mytest\/config\/log4j-test\.properties/')
--conf "spark.executor.extraJavaOptions= ${executorJavaOpts:34}" \
--conf "spark.driver.extraJavaOptions= ${driverJavaOpts:32}" \