On Thu, Feb 14, 2008 at 10:02 PM, Jacob Kjome <[EMAIL PROTECTED]> wrote:
> On Thu, 14 Feb 2008 17:49:57 +0100
> "Maarten Bosteels" <[EMAIL PROTECTED]> wrote:
> > On Thu, Feb 14, 2008 at 3:13 PM, James A. N. Stauffer <
> > [EMAIL PROTECTED]> wrote:
> >
> >> In an XML config, system properties can be used like ${catalina.base}.
> >>
> >
> >
> > Hello James,
> >
> > Great to hear that system properties are resolved, but what about
> > passing in a plain java.util.Properties file so that I can supply
> parameters
> > at runtime.
> >
>
> During one-time manual config of the logger repository? Not usually
> necessary
> as the parameters can only be set once anyway. They might as well be
> system
> properties, though being able to pass in properties to the
> PropertyConfigurator might be useful in some cases. However, I'm not sure
> it
> rises to the level of a must-have feature?
It's a feature of the PropertyConfigurator that is missing from the
DomConfigurator
and adding it shouldn't harm anyone.
> Using system properties woud not work for me because I want different a
> > value for this placeholder
> > per webapp (the log4j config file is shared though), and on tomcat
> system
> > property values are shared between webapps.
> > (well, it would probably work as long as these webapps are not
> > simultaneously configuring log4j ...)
> >
>
>
> This is quite simple. Just name your system properties per-webapp, using
> unique, but predictable, names. For instance, if you have a different
> location for logs to be stored, per-webapp, you can name it like...
>
> ${mywebapp.log.dir}
> ${myotherwebapp.log.dir}
> etc....
I think we have had this discussion before. And you don't seem to understand
my use-case.
I want to use ONE log4j config file (let's say /etc/log4j.xml) for all my
webapps, but each webapp should
use it's own log-file => I have ONE placeholder ${fileName} in
/etc/log4j.xml
which should be resolved at runtime based on the servlet context path of the
webapp.
It's working perfectly fine with the PropertyConfigurartor.
When a new webapp is added I don't have to change anything to the log4j
config file.
But when I want to use the DomConfigurator (because AFAICS the
RollingFileAppender from extras cannot
be configired via the PropertyConfigurator, right ?) I have to use my
work-around : setting the package scoped
props field.
regards
Maarten
BTW, you can avoid multiple apps configuring one logger repository by using
> a
> repository selector....or by taking advantage of classloading behavior
> (child-first under Tomcat-Standalone) and put log4j.jar in WEB-INF/lib and
> log4j.xml in WEB-INF/classes.
>
> > I've seen a package-scoped props field in the DomConfigurator but I
> could
> > not find where it's being assigned.
> >
>
> Not sure about this? Haven't loooked at it at all.
>
> > This is my current work-around:
> >
> > package org.apache.log4j.xml;
> > public class PropertyDomConfigurator {
> > /**
> > * configure log4j from an xml file, resolving ant style placeholders
> from
> > the given Properties object
> > * @param url URL to the xml config
> > * @param properties used for resolving placeholders
> > */
> > public static void configure(final URL url, Properties properties) {
> > DOMConfigurator configurator = new DOMConfigurator();
> > configurator.props = new Properties(properties);
> > configurator.doConfigure(url, LogManager.getLoggerRepository());
> > }
> > }
> >
> > What do you think about adding this method to DOMConfigurator ?
> >
> > Maarten
> >
> >
> >
> >>
> >> On Wed, Feb 13, 2008 at 5:23 PM, osubb <[EMAIL PROTECTED]> wrote:
> >> >
> >> > I am pretty new to log4j and have a question that should be easy. I
> am
> >> using
> >> > log4j in a web (java servlets) environment.
> >> >
> >> > 1) How do I pass in variables? I have an app that uses the
> >> JDBCAppender
> >> > and would like to pass in the connection values. Is there an easy
> way
> >> to do
> >> > this? These values could be different for each client that access
> the
> >> > Servlet(s). Is there a pattern for this type of scenario?
> >> >
> >> > At this point, I have to hardcode the URL, user, and password values
> in
> >> the
> >> > log4j.xml file. I tried using MDC, but this seems to work in the
> >> > "ConversionPattern" param for log files and the "sql" param name for
> >> the
> >> > JDBCAppender. It does not work for the "URL", "user", and
> "password"
> >> param
> >> > values (does not change to MDC value).
> >> >
> >> > Any help would be appreciated,
> >> > osubb
> >> > --
> >> > View this message in context:
> >>
> http://www.nabble.com/dynamic-variables-parameters-tp15470530p15470530.html
> >> > Sent from the Log4j - Users mailing list archive at Nabble.com.
> >> >
> >> >
> >> >
> ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> > For additional commands, e-mail: [EMAIL PROTECTED]
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> James A. N. Stauffer http://www.geocities.com/stauffer_james/
> >> Are you good? Take the test at http://www.livingwaters.com/good/
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>