You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Michael Locher <lo...@iam.unibe.ch> on 2002/11/07 14:42:32 UTC
Patch to substitute variables in the log4j.configuration property
Hi all
I had to find a way to provide a user dependent configuration file for
my java webstart application. the stright forward way to do so, is to
handle property substitution in the LogManager initalisation.
webstart users can provide something like this:
<property name="log4j.configuration"
value="file://${user.home}/log4j.properties" />
the substitiution code was already there, so the patch is quite small.
one new method in OptionConverter and 3 renamings in LogManager.
In what format do you expect the patch? I have included a diff against
CVS HEAD below.
Regards
Michael Locher
#####################################################################
diff -r1.37 OptionConverter.java
20a21
> // Michael Locher (locher@iam.unibe.ch)
98a100,120
> /**
> Very similar to <code>System.getProperty</code> except
> that the {@link SecurityException} is hidden and substitutions
are perfor
med.
>
> @param key The key to search for.
> @param def The default value to return.
> @return the string value of the system property with applied
substitution
s, or the default
> value if there is no property with that key.
> */
> public
> static
> String getSubstitutedSystemProperty(String key, String def) {
> try {
> Properties systemProperties = System.getProperties();
> return
OptionConverter.substVars(OptionConverter.getSystemProperty(key
, def),
> System.getProperties());
> } catch(Throwable e) { // MS-Java throws
com.ms.security.SecurityExcepti
onEx
> LogLog.debug("Was not allowed to read system properties.");
> return def;
> }
> }
#####################################################################
diff -r1.9 LogManager.java
78,79c78,79
< String override
=OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_K
EY,
< null);
---
> String override
=OptionConverter.getSubstitutedSystemProperty(DEFAULT_INIT
_OVERRIDE_KEY,
> null);
85c85
< String configurationOptionStr = OptionConverter.getSystemProperty(
---
> String configurationOptionStr =
OptionConverter.getSubstitutedSystemProp
erty(
89c89
< String configuratorClassName = OptionConverter.getSystemProperty(
---
> String configuratorClassName =
OptionConverter.getSubstitutedSystemPrope
rty(
#####################################################################
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Patch to substitute variables in the log4j.configuration
property
Posted by Ceki Gülcü <ce...@qos.ch>.
Michael,
I created bug number 14350 so that we can remember to add this
functionality. See
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14350
Many thanks for the patch.
At 14:42 07.11.2002 +0100, you wrote:
>Hi all
>
>I had to find a way to provide a user dependent configuration file for my
>java webstart application. the stright forward way to do so, is to handle
>property substitution in the LogManager initalisation.
>
>webstart users can provide something like this:
>
><property name="log4j.configuration"
>value="file://${user.home}/log4j.properties" />
>
>the substitiution code was already there, so the patch is quite small.
>one new method in OptionConverter and 3 renamings in LogManager.
>
>In what format do you expect the patch? I have included a diff against CVS
>HEAD below.
>
>Regards
> Michael Locher
>
>
>#####################################################################
>
>diff -r1.37 OptionConverter.java
>20a21
> > // Michael Locher (locher@iam.unibe.ch)
>98a100,120
> > /**
> > Very similar to <code>System.getProperty</code> except
> > that the {@link SecurityException} is hidden and substitutions are
> perfor
>med.
> >
> > @param key The key to search for.
> > @param def The default value to return.
> > @return the string value of the system property with applied
> substitution
>s, or the default
> > value if there is no property with that key.
> > */
> > public
> > static
> > String getSubstitutedSystemProperty(String key, String def) {
> > try {
> > Properties systemProperties = System.getProperties();
> > return
> OptionConverter.substVars(OptionConverter.getSystemProperty(key
>, def),
> > System.getProperties());
> > } catch(Throwable e) { // MS-Java throws
> com.ms.security.SecurityExcepti
>onEx
> > LogLog.debug("Was not allowed to read system properties.");
> > return def;
> > }
> > }
>
>#####################################################################
>
>diff -r1.9 LogManager.java
>78,79c78,79
>< String override
>=OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_K
>EY,
>< null);
>---
> > String override
> =OptionConverter.getSubstitutedSystemProperty(DEFAULT_INIT
>_OVERRIDE_KEY,
> > null);
>85c85
>< String configurationOptionStr = OptionConverter.getSystemProperty(
>---
> > String configurationOptionStr =
> OptionConverter.getSubstitutedSystemProp
>erty(
>89c89
>< String configuratorClassName = OptionConverter.getSystemProperty(
>---
> > String configuratorClassName =
> OptionConverter.getSubstitutedSystemPrope
>rty(
>
>#####################################################################
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
--
Ceki
TCP implementations will follow a general principle of robustness: be
conservative in what you do, be liberal in what you accept from
others. -- Jon Postel, RFC 793
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>