我试图从命令行启动一个java应用程序,希望它能够在另一个文件夹中获取log4j配置文件。这是我的文件夹结构:
/app
- >应用程序基础文件夹
/app/config
- >存储自定义配置文件,包括log4j
/app/lib
- >存放所有的罐子
但是当我尝试从/app
运行程序时出于某种原因log4j没有正确初始化:
-bash-4.2# pwd
/app
-bash-4.2# java -cp config:lib/* -Xmx1024M className
log4j:WARN No appenders could be found for logger(org.springframework.beans.factory.xml.XmlBeanDefinitionReader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
令人惊讶的是,如果我将配置文件夹移动到/lib
,然后尝试从那里启动java程序,这一切似乎都在起作用:
(更新的文件夹结构):
/app
- >应用程序基础文件夹
/app/lib
- >存放所有的罐子
/app/lib/config
- >存储自定义配置文件,包括log4j
输出:
-bash-4.2# pwd
/app/lib
-bash-4.2# java -cp config:* -Xmx1024M className
<Expected log message now shows up>
在我的代码中,我使用PropertyConfigurator
加载配置文件:
PropertyConfigurator.configureAndWatch(loggingConfigFile)
logProperties
定义为
val loggingConfigFile = "config/custom.logging.properties"
最初我认为第一种情况的问题是某种路径问题,但是在运行时打印System.getProperty("user.dir")
时,程序似乎确实在/app
下运行并且它应该能够从定义的路径加载配置文件(即/app/config/custom.logging.properties
)。设置有什么问题吗?