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]>