Thank you Jake for your help. My options are now clear. Jan
"Jacob Kjome" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Quoting jan_bar <[EMAIL PROTECTED]>: > > > Thanks for your extensive answer, see inline.. > > > > > Well, when you are using a repository selector, the idea is that you > > > have Log4j in a position where it is not part of your app, but part > > > of the server; otherwise there's no point to using a repository > > > selector. In order for a server wide instance of Log4j to service > > > many apps without each of them stomping on each other's logging, each > > > app needs to be assigned its own logger repository. On the other > > > hand, if you deploy your app with Log4j in WEB-INF/lib (and use > > > child-first classloading behavior), you can just use the default > > > logger repository since your app will be the only one utilizing the > > > instance of Log4j. > > > > I know about this possibility and also it's classloading order fragility. I > > want to avoid this. > > > > Don't we all. But in order to do so, we must take the necessary steps to get > the custom repository selector and log4j.jar in the same classloader that is a > parent of any specific application classloader. > > > > The solution is to deploy your custom repository selector alongside > > > the global instance of Log4j, not with your app. And if you have > > > access to the JBoss startup script, you can set the -D property to > > > set the repository selector when JBoss starts up (sorry, can't recall > > > the system property name to set ATM). > > > > How can I set the repository selector of JBoss startup? Is the mentioned > > property used in Log4j init or inside JBoss? I looked into sources of both, > > but did not found any call to LogManager.setRepositorySelector(). > > > > My memory slightly failed me. The system property I referred to does exist, but > only in Log4j-1.3alpha. You'd use either... > > -Dlog4j.repositorySelector=JNDI > OR > -Dlog4j.repositorySelector=fully.qualified.ClassName > > The "JNDI" value corresponds to the new > org.apache.log4j.selector.ContextJNDISelector that is part of Log4j-1.3alpha, > but does *not* exist in Log4j-1.2.xx. So, if you want to use this feature, > you'll have to use Log4j-1.3. I would build from source if you do, because a > lot has changed since the last release. A new release should be out pretty > soon based on what some of the other Log4j committers have stated. Can't > promise any specific date, though. > > > I found org.jboss.portal.common.logging.LoaderRepositorySelector, which > > looks exactly as something I miss in JBoss AS. It's part of the JBoss > > Portal. > > > > So, the portal sets its own repository selector. Not sure where, but since the > portal pretty much is the server to all the other portlet applications that get > deployed under it, it would make sense to do it at that level. For JBoss AS, > you can write a server startup class (most servers provide a proprietary API > for startup classes that the server will call as configured) and set your > preferred repository selector inside that. Any app deployed under that server > will log to the appropriate logger repository provided by the configured > repository selector. > > Jake > > > Thanks, Jan > > > > > > > > > > --------------------------------------------------------------------- > > 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]
