How about including the job name in the logger name: jobName + "." +
getClass().getName()
Then you wouldn't need to do anything with repositories.

On Thu, Apr 10, 2008 at 9:49 AM, Robert Pepersack
<[EMAIL PROTECTED]> wrote:
> I'm not confusing LogManager.setLoggerRepository(repository, guard) and 
> LogManager.getLoggerRepository().  I understand everything in Chapter 8.
>
>  I wouldn't be creating all that many repositories, just one for each of my 
> jobs (this is analogous to one repository per web application).  I currently 
> have six jobs, so would I have six instances of Hierarchy that get reused 
> again and again?
>
>
>  Robert Pepersack
>  Senior Lead Developer
>  Maryland Insurance Administration
>  410-468-2054
>
>  >>> Jacob Kjome <[EMAIL PROTECTED]> 04/10/2008 10:34 AM >>>
>
>
> Are you confusing LogManager.setLoggerRepository(repository, guard) with
>  LogManager.getLoggerRepository()?  In whatever environment you are in, you 
> just
>  need to make sure that you set your custom repository selector first thing, 
> before
>  doing any logging.  A servlet context listener was only a suggestion of a 
> possible
>  way to do it if you were running in a servlet environment.
>
>  You could do this prior to loading the Spring application context.  I'm 
> assuming
>  that if you are using plain old JSE, and not JEE, that Spring 
> applicationContext
>  loading is not being done in some automatic way, but manually.
>
>  And I think I said the per/thread approach is heavyweight because it creates 
> a
>  *lot* of logger repositories and requires configuration to run on each of 
> them as
>  they are created.  That's much more heavyweight than the typical application
>  server JNDI-based logger repositories, which would only be created once per
>  application.
>
>  Finally, you don't have to call LogManager.getLoggerRepository().  Your 
> selector
>  implements this.  Log4j calls it internally when determining which logger
>  repository to log to.  Your selector implements...
>
>  public LoggerRepository getLoggerRepository();
>
>  Again, see the ContextJNDISelector in the sandbox for an example...
>  
> http://svn.apache.org/repos/asf/logging/sandbox/log4j/log4j_sandbox/tags/LOG4J_SANDBOX_ALPHA3/src/java/org/apache/log4j/selector/ContextJNDISelector.java
>
>  Your code just does the following, as usual...
>
>  logger.debug("blah");
>
>
>  It's all magic/smoke and mirrors.  That's both the beauty and the bane of the
>  repository selector solution.  It's works transparently, like magic, but it's
>  sometimes hard to comprehend; and sometimes simply fails to work in certain
>  situations.
>
>
>  Jake
>
>  Robert Pepersack wrote:
>  > James and Jake, thanks for your replies.
>  >
>  > I want to specify a RepositorySelector, because I'm using the Spring IOC 
> container to manage my application.  The Spring IOC container is a J2SE 
> container, not J2EE.  So, there is no ServletContext for me to use to 
> determine which repository to select.  The book points out that 
> LogManager.getLoggerRepository() does not accept any arguments, and it says 
> that the RepositorySelector must track the context.  But, in a J2SE 
> environment, I don't know a way to do this - other than using the MDC, as 
> Heri suggests in the log4j archives.  Jake, you said that this approach is 
> heavy weight, but I don't understand why.  Here is the URL for Heri's 
> suggestion:
>  >
>  > 
> http://mail-archives.apache.org/mod_mbox/logging-log4j-user/200602.mbox/[EMAIL
>  PROTECTED]
>  >
>  > But, here is an added twist.  In the Spring IOC containter, most objects 
> are created by one thread as the container starts, and the objects' methods 
> are executed by another thread (i.e. Quartz jobs).  Since my loggers are 
> created as instance variables, the MDC approach breaks down.
>  >
>  > Thanks,
>  >
>  > Robert Pepersack
>  > Senior Lead Developer
>  > Maryland Insurance Administration
>  > 410-468-2054
>  >
>  >>>> "Jacob Kjome" <[EMAIL PROTECTED]> 04/09/2008 5:52 PM >>>
>  > Your repository selector selects the repository.  You set the repository
>  > selector by calling LogManager.setRepositorySelector(selector, guard).  
> Note
>  > that the guard is provided so that if someone else comes along a tries to
>  > reset it, they will get an IllegalArgumentException and be prevented from
>  > overriding the initial setting.  This is because the selector is global to 
> the
>  > Log4j instance.  Repository selector setting is meant to be done at
>  > application startup.  When running inside an application server, it should,
>  > ideally, be set by the server.  However, if you are the only app to use it,
>  > you could have a servlet context listener do this upon application startup.
>  >
>  > 
> http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/LogManager.html#setRepositorySelector(org.apache.log4j.spi.RepositorySelector,%20java.lang.Object)
>  >
>  > As you can see, this has nothing to do with logger statements.  Your code
>  > doesn't have to change in order to use a repository selector.
>  >
>  > Jake
>  >
>  > On Wed, 09 Apr 2008 11:58:53 -0400
>  >   "Robert Pepersack" <[EMAIL PROTECTED]> wrote:
>  >> I've checked the archives and didn't find an answer, but please forgive me
>  >> if this a duplicate post.
>  >>
>  >> I would like to be able to specify a repository for my logger to use.  For
>  >> example:  Logger logger = new Logger("my.class.name", "myRepositoryName");
>  >>
>  >> I read Chapter 8, "Extending log4j", and it said that subclassing Logger 
> is
>  >> a bad idea.  I don't see a way to accomplish what I want by wrapping 
> Logger.
>  >> So, I think, that the only way to do it would be to tweak a few of the 
> log4j
>  >> classes (i.e. Logger, LogManager, RepositorySelector, and
>  >> DefaultRepositorySelector).  Would anyone be interested in this, or am I
>  >> barking up the wrong tree?  I realize that this could open a can of worms
>  >> with a lot of repositories getting created, but, if we're carful, this 
> could
>  >> be very useful.
>  >>
>  >> Thanks,
>  >>
>  >> Robert Pepersack
>  >> Senior Lead Developer
>  >> Maryland Insurance Administration
>  >> 410-468-2054
>  >>
>  >>
>  >> ---------------------------------------------------------------------
>  >> 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]
>  >
>  >
>  >
>  > ---------------------------------------------------------------------
>  > 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]
>
>
>  ---------------------------------------------------------------------
>  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]

Reply via email to