Okay - I think I fixed this in latest CVS. Can you download it and make sure
all is good ?
On Wed, 19 Dec 2001 13:41, [EMAIL PROTECTED] wrote:
> I have been playing around with Namespace hierarchies and additivity and
> have come across some behaviour which does not seem right.
>
>
> The following code exhibits the problem:
>
> public void testLoggerAdditivity() {
> Hierarchy h = new Hierarchy();
> Logger logger1 = h.getLoggerFor("A");
> logger1.setPriority(Priority.DEBUG);
> Logger logger2 = h.getLoggerFor("A.B");
> logger2.setPriority(Priority.DEBUG);
> Logger logger3 = h.getLoggerFor("A.B.C");
> logger3.setPriority(Priority.DEBUG);
> final String pattern =
> "%7.7{priority} %5.5{time} [%8.8{category}] "
> + "(%{context}): %{message}\\n%{throwable}";
> final PatternFormatter formatter = new PatternFormatter(pattern);
> File file1 = new File("LKAdd1.txt");
> try {
> FileTarget target1 = new FileTarget(file1, false, formatter);
> PriorityFilter filter = new PriorityFilter(Priority.ERROR);
> //Set log targets of logger
> logger1.setLogTargets(new LogTarget[] { target1, filter });
> logger1.setAdditivity(true);
> File file2 = new File("LKAdd2.txt");
> FileTarget target2 = new FileTarget(file2, false, formatter);
> logger2.setLogTargets(new LogTarget[] { target2, filter });
> }
> catch (IOException ioe) {
> }
> logger2.setAdditivity(true);
> logger3.setAdditivity(true);
> logger1.info("Additivity Message1");
> logger2.info("Additivity Message2");
> logger3.info("Additivity Message3");
> }
>
> Having setup a 3 level hierarchy, I attach targets to levels 1 and 2 (but
> not 3). However the results written to the files LKAdd1.txt are:
> INFO 10087 [A ] (): Additivity Message1
> INFO 10087 [A.B ] (): Additivity Message2
> and the results written to LKAdd2.txt are:
> INFO 10087 [A.B ] (): Additivity Message2
> INFO 10087 [A.B.C ] (): Additivity Message3
>
> I would have assumed that the text logged to logger3 would also appear in
> the target attached to logger1.
>
> It is prevented from doing so by the following chunk of code in the log
> method of class Logger:
>
> if( m_logTargetsForceSet && m_additivity && null != m_parent )
> {
> m_parent.output( event );
> }
>
> m_logTargetsForceSet is only set when a target is added but as logger3
> uses the inherited handler and not one of its own, it only logs to
> LKAdd2.txt and refuses to log to any parent targets.
>
> I could not find any description as to how additivity is actually handled
> so is this a defect?
>
>
>
> ****************************************************************
> NOTICE - This message is intended only for the use of the
> addressee named above and may contain privileged and
> confidential information. If you are not the intended recipient
> of this message you are hereby notified that you must not
> disseminate, copy or take any action based upon it. If you
> received this message in error please notify HIC immediately.
> Any views expressed in this message are those of the individual
> sender, except where the sender specifically states them to be
> the views of HIC.
> ****************************************************************
--
Cheers,
Pete
-------------------------
All things considered,
insanity may be the only
reasonable alternative.
-------------------------
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>