[ 
https://issues.apache.org/jira/browse/LOG4J2-742?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pascal Chollet updated LOG4J2-742:
----------------------------------

    Description: 
When using XInclude in a log4j2 configuration, it uses the CWD of the running 
application instead of the location of the log4j configuration as base.
I.e. running the application from within eclipse, the CWD of eclipse is used as 
base for finding the document to be included.

IMO, the problem is in XmlConfiguration:
{code}
            final InputStream configStream = configSource.getInputStream();
            try {
                buffer = toByteArray(configStream);
            } finally {
                configStream.close();
            }
            final InputSource source = new InputSource(new 
ByteArrayInputStream(buffer));
            final Document document = newDocumentBuilder().parse(source);
{code}
There is no way the DOMParser can know, where the base should be, because it is 
just parsing an InputStream and has no file location. 

The fix would be to add source.setSystemId(configSource.getLocation()) before 
parsing the document.

  was:
When using XInclude in a log4j2 configuration, it uses the CWD of the running 
application instead of the location of the log4j configuration as base.
I.e. running the application from within eclipse, the CWD of eclipse is used as 
base for finding the document to be included.

IMO, the problem is in XmlConfiguration:
{code}
            final InputStream configStream = configSource.getInputStream();
            try {
                buffer = toByteArray(configStream);
            } finally {
                configStream.close();
            }
            final InputSource source = new InputSource(new 
ByteArrayInputStream(buffer));
            final Document document = newDocumentBuilder().parse(source);
{code}
There is no way the DOMParser can know, where the base should be, because it is 
just parsing a InputStream and has not file location. 

The fix would be to add source.setSystemId(configSource.getLocation()) before 
parsing the document.


> XInclude not working with relative path
> ---------------------------------------
>
>                 Key: LOG4J2-742
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-742
>             Project: Log4j 2
>          Issue Type: Bug
>    Affects Versions: 2.0
>            Reporter: Pascal Chollet
>
> When using XInclude in a log4j2 configuration, it uses the CWD of the running 
> application instead of the location of the log4j configuration as base.
> I.e. running the application from within eclipse, the CWD of eclipse is used 
> as base for finding the document to be included.
> IMO, the problem is in XmlConfiguration:
> {code}
>             final InputStream configStream = configSource.getInputStream();
>             try {
>                 buffer = toByteArray(configStream);
>             } finally {
>                 configStream.close();
>             }
>             final InputSource source = new InputSource(new 
> ByteArrayInputStream(buffer));
>             final Document document = newDocumentBuilder().parse(source);
> {code}
> There is no way the DOMParser can know, where the base should be, because it 
> is just parsing an InputStream and has no file location. 
> The fix would be to add source.setSystemId(configSource.getLocation()) before 
> parsing the document.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to