我有一个构建文件,作为构建过程的一部分依赖于几个taskdef.这些taskdef项(例如,webdoclet和jasper2)使用log4j作为记录器.理想情况下,我希望能够为每个提供不同的log4j配置文件,但最低限度,我希望能够指定使用哪个log4j配置文件.
我以前做的工作是在类路径的前面放置包含我希望taskdef使用的log4j.xml的目录.例如:
.... ....
事实上,我已经验证了"Build"目录位于类路径的前面,并且该目录中存在log4j.xml.但是,当我在调试时使用log4j以详细模式运行ant时,我看到log4j正在选择当前工作目录中的log4j.xml ,这不是我想要的.Log4j似乎没有使用类路径来解析默认的log4j.xml.
我正在使用log4j 1.2.8(嵌入在一个更大的框架中,所以我无法升级它),其中一些taskdef似乎依赖于commons-logging 1.0.3.构建过程使用Sun Java 5.
如果我set ANT_OPTS=-Dlog4j.configuration=Build/log4j.xml
在运行ant之前,taskdefs正确加载了所需的log4j.xml.
将"Build"目录放在类路径的前面,用于工作的taskdef.我不知道改变了什么.如何恢复我可以控制的行为 - 在build.xml中 - 哪个log4j配置文件用于给定任务?除了设置ANT_OPTS以外,还有其他方法可以将应用程序的log4j.xml移出当前工作目录以使log4j找到正确的log4j.xml文件吗?