|
Log4j 1.3alpha-1 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.log4j.selector.ContextJNDISelector
Log4j JNDI based Repository selector
based primarily on Ceki Gülcü's article
RepositorySelector
in Servlet ContainersBy default, the class static RepositorySelector
variable
of the LogManager
class is set to a trivial
implementation which always returns the same logger repository. a.k.a.
hierarchy. In other words, by default log4j will use one hierarchy, the
default hierarchy. This behavior can be overridden via
the RepositorySelector
LogManager
's
setRepositorySelector(RepositorySelector, Object)
method.
That is where this class enters the picture. It can be used to define a
custom logger repository. It makes use of the fact that in J2EE
environments, each web-application is guaranteed to have its own JNDI
context relative to the java:comp/env
context. In EJBs, each
enterprise bean (albeit not each application) has its own context relative
to the java:comp/env
context. An env-entry
in a
deployment descriptor provides the information to the JNDI context. Once the
env-entry
is set, a repository selector can query the JNDI
application context to look up the value of the entry. The logging context of
the web-application will depend on the value the env-entry. The JNDI context
which is looked up by this class is
java:comp/env/log4j/context-name
.
Here is an example of an env-entry
:
<env-entry>
<description>JNDI logging context name for this app</description>
<env-entry-name>log4j/context-name</env-entry-name>
<env-entry-value>aDistinctiveLoggingContextName</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
If multiple applications have the same logging context name, then they will share the same logging context.
You can also specify the URL for this context's configuration resource. This repository selector (ContextJNDISelector) will use the specified resource to automatically configure the log4j repository.
<env-entry> <description>URL for configuring log4j context</description> <env-entry-name>log4j/configuration-resource</env-entry-name> <env-entry-value>urlOfConfigrationResource</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
In case no configuration resource is specified, this repository selector will attempt to find the files log4j.xml and log4j.properties from the resources available to the application.
It follows that bundling a log4j.xml file in your web-application and setting context name will be enough to ensure a separate logging environment for your applicaiton.
Given that JNDI is part of the J2EE specification, the JNDI selector is the recommended context selector.
Constructor Summary | |
ContextJNDISelector()
public no-args constructor |
Method Summary | |
LoggerRepository |
detachRepository(java.lang.String contextName)
Remove the repository with the given context name from the list of known repositories. |
LoggerRepository |
getLoggerRepository()
Return the repoistory selector based on the current JNDI environment. |
void |
setDefaultRepository(LoggerRepository dh)
Sets the default repository |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ContextJNDISelector()
Method Detail |
public void setDefaultRepository(LoggerRepository dh)
RepositorySelector
setDefaultRepository
in interface RepositorySelector
public LoggerRepository getLoggerRepository()
getLoggerRepository
in interface RepositorySelector
public LoggerRepository detachRepository(java.lang.String contextName)
detachRepository
in interface RepositorySelector
|
Log4j 1.3alpha-1 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |