Hello Apropos: > I also think, that only one instance is needed of LoggerHierarchy.
I'm too tired to think about this in dept at the moment but coincidently I just stumbled about the following sentence in the log4j docs: "Recent log4j releases support multiple hierarchy trees. This enhancement allows each virtual host to possess its own copy of the logger hierarchy." http://logging.apache.org/log4j/1.2/manual.html - NDC section bye, -christian- Am Fri, 7 Aug 2009 22:45:20 +0200 schrieb Christian Grobmeier <[email protected]>: > Hi, > > please see my other e-mail with refactoring thoughts before a while. > Would like to hear your thoughts about that too, since your mail and > mine is tied together. > > I also think, that only one instance is needed of LoggerHierarchy. But > its not necessary to have a singleton() method in LoggerHierarchy, > only the Logger class should care about it. My comment (yeah, I wrote > it :-)) was referring that the class LoggerHierachy is dealing with > beeing a singleton itself. > > Looking at Log4Js hierarchy: > http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Hierarchy.html > > Even they don't have a singleton() method in the hierarchy. Its care > somewhere else. > > Log4PHP doesn't have a repository selector. This would have been tied > to the LoggerManager, we removed before a while, cause it has no sense > (at the moment). Looking at the > http://logging.apache.org/log4j/1.2/manual.html#defaultInit where > Log4Js LogManager refers too, its not mentioned any more. Even the > fields you can find in the link are marked as deprecated. > > However - to make it easy in PHP world I would suggest to create one > single instance of LoggerHierarchy in the Logger class and delete the > singleton method from LoggerHierachy. > > But please see my other mail, where I opened this discussion more > deeply. I am really interested in what you say. > > Thanks, > Christian > > > > On Fri, Aug 7, 2009 at 10:31 PM, Christian Hammers<[email protected]> > wrote: > > Hello > > > > Regarding the TODO comment: > > > > class LoggerHierarchy { > > ... > > /* TODO: In log4j is this class not a singleton. Why is it > > in log4php? */ public static function singleton() { > > static $instance; > > if(!isset($instance)) { > > $instance = new LoggerHierarchy(new > > LoggerRoot()); } > > return $instance; > > } > > > > In log4j they use: > > > > static private RepositorySelector repositorySelector; > > > > public static LoggerRepository getLoggerRepository() { > > if (repositorySelector == null) { > > repositorySelector = new DefaultRepositorySelector(new > > NOPLoggerRepository()); ... > > } > > return repositorySelector.getLoggerRepository(); > > } > > > > which looks to me like a Singleton. The repositorySelector is only > > a container for the Hierarchy object which is quite the same as our > > LoggerHierarchy. > > > > bye, > > > > -christian- > >
