The ${foo} syntax was added as a quick fix to allow environment
variables to be used. 

The preferred way of using an environment variable is to use a
PatternString with %env{foo}

<file type="log4net.Util.PatternString"
value="%env{OUTPATH}\log-file.txt" /> 

However to be backward compatible we must still support the ${foo}
syntax.

I don't think that we should enhance the ${foo} syntax further as we
should really be encouraging users to use the PatternString instead.

Having said that I don't see any problem storing values on the
Repository object and having a pattern extract them. The Repository
already has a Properties map, however this is not examined by the
current %property patterns. The Reporitory's Properties is not much used
at the moment, but does provide a convenient place for Repository wide
custom properties.

I think we could easily add a method for the XmlConfigurator to set
properties on the Repository and either update the %env pattern or add a
new pattern that looks in this properties map.

What do you think?

Nicko

> -----Original Message-----
> From: Ron Grabowski [mailto:[EMAIL PROTECTED] 
> Sent: 06 October 2005 03:52
> To: log4net-dev@logging.apache.org
> Subject: Extending support for ${foo} notation
> 
> The ${foo} notation searches the environment for a key and 
> uses its value. I wonder if it would be useful to introduce 
> the idea of a local environment that would allow locally 
> scoped temporary environment
> variables:
> 
>  <log4net>
>   <localEnvironment name="LOG4NET_PATH" value="c:\logs\staging" />
>   <localEnvironment name="DEFAULT_LAYOUT" value="%message%newline" />
>   <appender name="FileAppender" type="log4net.Appender.FileAppender">
>    <file value="${LOG4NET_PATH}\log.txt" />
>    <layout
>     type="log4net.Layout.PatternLayout"
>     value="${DEFAULT_LAYOUT}" />
>   </appender>
> 
> If the item was not found in the local environment, 
> System.Environment would be searched.
> 
> Comments?
> 
> - Ron
> 

Reply via email to