You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Thomas Wiedmann <th...@gmx.de> on 2011/02/20 13:35:10 UTC

Setting properties for log4j.xml configuration file

Hello,

usually in flat plain text log4j.config files global system properties can 
be defined, which may be referenced in the configuration of different 
appenders, e. g.

log4j.logdir=C:/Data/logfiles
...
log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
...
log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log

I found this is a very convenient way to define (and to administer) such 
parameters only once globally for the entire log configuration and to use it 
on several references as here in the appenders configuration.

How can such global system properties be defined in xml-based configuration 
files (log4j.xml)?
Where is it documented? I'd found no hint about it.

Thomas Wiedmann 



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Thomas Wiedmann <th...@gmx.de>.
Meanwhile I found the solution (for all, who'll might have the same question 
in future:) by defining an XML entity declaring the logfiles directory (or 
any other parameter, required, to be referenced in the log4j.xml) - Sample:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" [<!ENTITY log4j:logDir 
"C:/MyProject/MyLogs">]>

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
   <appender name="fileout" 
class="org.apache.log4j.DailyRollingFileAppender">
     <param name="file" value="&log4j:logDir;/mytests.log"/>

Thomas Wiedmann
...



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Thomas Wiedmann <th...@gmx.de>.
> ... and I'm not aware of any capability in XML configuration files to set 
> system properties.
Yes, exactly this is my main question (How to set a property, which can be 
referenced in the xml config elsewhere? It works in flat log4j text config 
files) - it's still open. Unfortunately I didn't even found a hint about it 
in the link http://wiki.apache.org/logging-log4j/Log4jXmlFormat.

Thomas Wiedmann


On Feb 21, 2011, at 8:05 PM, Jacob Kjome wrote:

>
> Curt,
>
> Maybe I'm missing something, but how does using XML entity refs do 
> anything for
> referencing Java system properties?  The simple answer is that Log4j XML 
> config
> files support exactly the same syntax as properties files, e.g.,....
>
>    <param name="File" value="${log4j.logdir}/MyAppender1.log"/>
>
> I don't recall whether/where it's specifically documented or not, but it 
> works.
>
>
> Jake
>
> On 2/20/2011 10:30 PM, Curt Arnold wrote:
>> XML entity references can be used for that purpose and are defined in the 
>> XML Recommendation (http://www.w3.org/TR/xml/#sec-references).
>>
>> <!DOCTYPE log4j:configuration
>> [
>> <!ENTITY logdir "c:/data/logfiles">
>> ]>
>> <log4j:configuration>
>> ...
>> <param name="file" value="&logdir;"/>
>> ...
>> </log4j:configuration>
>>
>> On Feb 20, 2011, at 6:35 AM, Thomas Wiedmann wrote:
>>
>>> Hello,
>>>
>>> usually in flat plain text log4j.config files global system properties 
>>> can be defined, which may be referenced in the configuration of 
>>> different appenders, e. g.
>>>
>>> log4j.logdir=C:/Data/logfiles
>>> ...
>>> log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
>>> ...
>>> log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log
>>>
>>> I found this is a very convenient way to define (and to administer) such 
>>> parameters only once globally for the entire log configuration and to 
>>> use it on several references as here in the appenders configuration.
>>>
>>> How can such global system properties be defined in xml-based 
>>> configuration files (log4j.xml)?
>>> Where is it documented? I'd found no hint about it.
>>>
>>> Thomas Wiedmann
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Jacob Kjome <ho...@visi.com>.
You're right, I did miss something.  I didn't see "log4j.logdir" being set 
within the file in the original example.  Sorry about that.  Your original 
answer appears to be right on the money.

Jake


On Mon, 21 Feb 2011 22:54:31 -0600
 Curt Arnold <ca...@apache.org> wrote:
> I read the question as "how do I define parameters once" in an XML 
>configuration file and the use of system properties was just a convenient way 
>of doing that in property file configurations.  The property file example 
>included setting log4j.logdir in the file and I'm not aware of any capability 
>in XML configuration files to set system properties.  If the property was 
>already set externally, then you could use the same type of expressions as in 
>the example.
> 
> 
> 
> On Feb 21, 2011, at 8:05 PM, Jacob Kjome wrote:
> 
>> 
>> Curt,
>> 
>> Maybe I'm missing something, but how does using XML entity refs do anything 
>>for
>> referencing Java system properties?  The simple answer is that Log4j XML 
>>config
>> files support exactly the same syntax as properties files, e.g.,....
>> 
>>    	<param name="File" value="${log4j.logdir}/MyAppender1.log"/>
>> 
>> I don't recall whether/where it's specifically documented or not, but it 
>>works.
>> 
>> 
>> Jake
>> 
>> On 2/20/2011 10:30 PM, Curt Arnold wrote:
>>> XML entity references can be used for that purpose and are defined in the 
>>>XML Recommendation (http://www.w3.org/TR/xml/#sec-references).
>>> 
>>> <!DOCTYPE log4j:configuration
>>> [
>>> <!ENTITY logdir "c:/data/logfiles">
>>> ]>
>>> <log4j:configuration>
>>> ...
>>> <param name="file" value="&logdir;"/>
>>> ...
>>> </log4j:configuration>
>>> 
>>> On Feb 20, 2011, at 6:35 AM, Thomas Wiedmann wrote:
>>> 
>>>> Hello,
>>>> 
>>>> usually in flat plain text log4j.config files global system properties can 
>>>>be defined, which may be referenced in the configuration of different 
>>>>appenders, e. g.
>>>> 
>>>> log4j.logdir=C:/Data/logfiles
>>>> ...
>>>> log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
>>>> ...
>>>> log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log
>>>> 
>>>> I found this is a very convenient way to define (and to administer) such 
>>>>parameters only once globally for the entire log configuration and to use it 
>>>>on several references as here in the appenders configuration.
>>>> 
>>>> How can such global system properties be defined in xml-based configuration 
>>>>files (log4j.xml)?
>>>> Where is it documented? I'd found no hint about it.
>>>> 
>>>> Thomas Wiedmann 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>> 
>>> 
>>> 
>>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>For additional commands, e-mail: log4j-user-help@logging.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Curt Arnold <ca...@apache.org>.
I read the question as "how do I define parameters once" in an XML configuration file and the use of system properties was just a convenient way of doing that in property file configurations.  The property file example included setting log4j.logdir in the file and I'm not aware of any capability in XML configuration files to set system properties.  If the property was already set externally, then you could use the same type of expressions as in the example.



On Feb 21, 2011, at 8:05 PM, Jacob Kjome wrote:

> 
> Curt,
> 
> Maybe I'm missing something, but how does using XML entity refs do anything for
> referencing Java system properties?  The simple answer is that Log4j XML config
> files support exactly the same syntax as properties files, e.g.,....
> 
>    	<param name="File" value="${log4j.logdir}/MyAppender1.log"/>
> 
> I don't recall whether/where it's specifically documented or not, but it works.
> 
> 
> Jake
> 
> On 2/20/2011 10:30 PM, Curt Arnold wrote:
>> XML entity references can be used for that purpose and are defined in the XML Recommendation (http://www.w3.org/TR/xml/#sec-references).
>> 
>> <!DOCTYPE log4j:configuration
>> [
>> <!ENTITY logdir "c:/data/logfiles">
>> ]>
>> <log4j:configuration>
>> ...
>> <param name="file" value="&logdir;"/>
>> ...
>> </log4j:configuration>
>> 
>> On Feb 20, 2011, at 6:35 AM, Thomas Wiedmann wrote:
>> 
>>> Hello,
>>> 
>>> usually in flat plain text log4j.config files global system properties can be defined, which may be referenced in the configuration of different appenders, e. g.
>>> 
>>> log4j.logdir=C:/Data/logfiles
>>> ...
>>> log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
>>> ...
>>> log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log
>>> 
>>> I found this is a very convenient way to define (and to administer) such parameters only once globally for the entire log configuration and to use it on several references as here in the appenders configuration.
>>> 
>>> How can such global system properties be defined in xml-based configuration files (log4j.xml)?
>>> Where is it documented? I'd found no hint about it.
>>> 
>>> Thomas Wiedmann 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>> 
>> 
>> 
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Jacob Kjome <ho...@visi.com>.
Curt,

Maybe I'm missing something, but how does using XML entity refs do anything for
referencing Java system properties?  The simple answer is that Log4j XML config
files support exactly the same syntax as properties files, e.g.,....

    	<param name="File" value="${log4j.logdir}/MyAppender1.log"/>

I don't recall whether/where it's specifically documented or not, but it works.


Jake

On 2/20/2011 10:30 PM, Curt Arnold wrote:
> XML entity references can be used for that purpose and are defined in the XML Recommendation (http://www.w3.org/TR/xml/#sec-references).
> 
> <!DOCTYPE log4j:configuration
> [
> <!ENTITY logdir "c:/data/logfiles">
> ]>
> <log4j:configuration>
> ...
> <param name="file" value="&logdir;"/>
> ...
> </log4j:configuration>
> 
> On Feb 20, 2011, at 6:35 AM, Thomas Wiedmann wrote:
> 
>> Hello,
>>
>> usually in flat plain text log4j.config files global system properties can be defined, which may be referenced in the configuration of different appenders, e. g.
>>
>> log4j.logdir=C:/Data/logfiles
>> ...
>> log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
>> ...
>> log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log
>>
>> I found this is a very convenient way to define (and to administer) such parameters only once globally for the entire log configuration and to use it on several references as here in the appenders configuration.
>>
>> How can such global system properties be defined in xml-based configuration files (log4j.xml)?
>> Where is it documented? I'd found no hint about it.
>>
>> Thomas Wiedmann 
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
> 
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Curt Arnold <ca...@apache.org>.
XML entity references can be used for that purpose and are defined in the XML Recommendation (http://www.w3.org/TR/xml/#sec-references).

<!DOCTYPE log4j:configuration
[
<!ENTITY logdir "c:/data/logfiles">
]>
<log4j:configuration>
...
<param name="file" value="&logdir;"/>
...
</log4j:configuration>

On Feb 20, 2011, at 6:35 AM, Thomas Wiedmann wrote:

> Hello,
> 
> usually in flat plain text log4j.config files global system properties can be defined, which may be referenced in the configuration of different appenders, e. g.
> 
> log4j.logdir=C:/Data/logfiles
> ...
> log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
> ...
> log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log
> 
> I found this is a very convenient way to define (and to administer) such parameters only once globally for the entire log configuration and to use it on several references as here in the appenders configuration.
> 
> How can such global system properties be defined in xml-based configuration files (log4j.xml)?
> Where is it documented? I'd found no hint about it.
> 
> Thomas Wiedmann 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Re: Setting properties for log4j.xml configuration file

Posted by Christian Grobmeier <gr...@gmail.com>.
Hi,

actually you are right. I think we should improve our documentation here.
In meanwhile, please try this:
http://wiki.apache.org/logging-log4j/Log4jXmlFormat

Let me know if this solves your problems.

Cheers
Christian

On Sun, Feb 20, 2011 at 1:35 PM, Thomas Wiedmann <th...@gmx.de> wrote:
> Hello,
>
> usually in flat plain text log4j.config files global system properties can
> be defined, which may be referenced in the configuration of different
> appenders, e. g.
>
> log4j.logdir=C:/Data/logfiles
> ...
> log4j.appender.MyAppender1.File=${log4j.logdir}/MyAppender1.log
> ...
> log4j.appender.MyAppender2.File=${log4j.logdir}/MyAppender2.log
>
> I found this is a very convenient way to define (and to administer) such
> parameters only once globally for the entire log configuration and to use it
> on several references as here in the appenders configuration.
>
> How can such global system properties be defined in xml-based configuration
> files (log4j.xml)?
> Where is it documented? I'd found no hint about it.
>
> Thomas Wiedmann
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
>
>



-- 
http://www.grobmeier.de

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org