Well, I am using Ant's Copy task with a filterset to generate my
log4j.xml. The file is correctly generated with the following line to
specify the log file:
<param name="File" value="C:\MyProject\log\test.log"/>
However, when log4j reads this file it interprets the back slashes as
escape characters. I don't think in XML we have to escape the
backslashs, but in either case I don't know how to do this with Ant. The
error generated by log4j is shown below. Note that it thinks that the
filename is "C:MyProjectlog est.log"!
log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException: C:MyProjectlog est.log (The filename,
directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:272)
at
org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:15
6)
at
org.apache.log4j.FileAppender.activateOptions(FileAppender.java:151)
at
org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)
at
org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:
210)
at
org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.
java:140)
at
org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigur
ator.java:153)
at
org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMCon
figurator.java:415)
at
org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:
335)
at
org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:788)
at
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:67
3)
at
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:61
6)
at
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:60
2)
at
org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConver
ter.java:460)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:113)
at org.apache.log4j.Category.getInstance(Category.java:514)
at
org.apache.commons.logging.impl.Log4jFactory.getInstance(Log4jFactory.ja
va:153)
at
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImp
l.java:285)
at
org.apache.commons.logging.LogFactory.getLog(LogFactory.java:409)
at
org.framework.config.test.ConfigTest.<clinit>(ConfigTest.java:19)
BTW, based on Dominique Devienne's suggestion in this thread, I have
used <pathconvert> to workaround this problem, but it is still a little
messy. <pathconvert> needs to be inside a target - it is not as easy as
setting a property anywhere in the build file.
Thanks.
Naresh
-----Original Message-----
From: Jacob Kjome [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 27, 2003 10:52 AM
To: Ant Users List
Subject: RE: How to get paths with forward slashes
If you read the docs on java.io.File, it can take the following formats:
C:\mydirectory\mysubdirectory\file.txt
C:\\mydirectory\\mysubdirectory\\file.txt
C:/mydirectory/mysubdirectory/file.txt
and the URL class taks the following formats:
file:///C:/mydirectory/mysubdirectory/file.txt
file:///C:\mydirectory\mysubdirectory\file.txt
you can even mix things up like this...
file:///C:\mydirectory\mysubdirectory/file.txt
The way I set up my file paths is:
<param name="File" value="${mycontext.log.home}/mylogfile.log"/>
I set a system property at runtime for said variable. The path that I
set
up looks like this on Windows:
C:\mydirectory\mysubdirectory
So, I'm not sure why Log4j would be choking on a path like this since it
works fine for me. Anyone else have an ideas?
Jake
At 06:48 AM 1/27/2003 -0500, you wrote:
>Well, here are the specific examples I am having trouble with:
>
>1) log4j's configuration file requires pathnames with either forward
>slashes or double back-slashes. If I use Ant to create this file with a
>path property, I get something like
>
> <param name="File" value="C:\MyProject\log\test.log"/>
>
>Log4j gets completely confused by this.
>
>2) The Axis Java2Wsdl task expects a URL in the form
>
> url="file:///C:/MyProject//MyProject.wsdl"
>
>I do not know how to give this URL to the Ant task even if I have a
>property that contains a regular path.
>
>Thanks.
>Naresh
>
>-----Original Message-----
>From: Jacob Kjome [mailto:[EMAIL PROTECTED]]
>Sent: Monday, January 27, 2003 12:00 AM
>To: Ant Users List
>Subject: Re: How to get paths with forward slashes
>
>
>
>Java programs will understand file: protocol URL's even if the slashes
>are a mix of forward and backslashes....at least that is my experience.
>So, I
>wouldn't worry much about this.
>
>Jake
>
>At 11:08 PM 1/26/2003 -0500, you wrote:
> >1) Is there a way to get paths in Ant with forward slashes even on
> >Windows platform? For example:
> >
> > <property name="app_home" location="."/>
> >
> >should somehow give c:/... instead of c:\...
> >
> >2) How can I get a file location as a URL (e.g. file:///C:/...)
> >
> >Naresh
> >
> >Naresh Bhatia
> >Sapient
> >One Memorial Drive, Cambridge, MA 02142
> >Tel: 617-761-1771 Fax: 617-621-1300
> >Email: [EMAIL PROTECTED]
>
>--
>To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail:
><mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>