One of the major implementaiton complaints I have about Cocoon is its lack of Log4J logging functionality. Log4j, is without a doubt the best logging package for java. No other package can even hope to compare to it. If Cocoon was built to use Log4j instead of the avalon logging mechanism, it would gain an enormous amount of functionality that it lacks now.
It is doable with Fortress, Merlin, or Phoenix. Phoenix is not designed for Cocoon like applications, so your choise is Fortress and Merlin. There is already support for it.
Personally, when working in a production environment, I dont want my log files to be put into direcroies in my web app. Id rather have them forwarded to a central log accumulation server or even sent out via JMS. Log4j allows this and many more configurations. Furthermore, it allows you to turn on and off logging on individual components with ease. Finally, Log4J is used in so many other products that it is a recognized standard logging mechanism that many organizations and even network engineers are quite familiar with.
Still doable with LogKit.
As to turning logging on and off to individual components:
It is assuming that you have a class name == component name relationship. That is not really helpful in a situation where we have many instances of the same class. LogKit can turn on and off individual *categories* which is what Log4J does. Both provide this ability.
Therefore, I think Cocoon should migrate to Log4j. In order to contemplate this, its important that we discuss the complexities of it in the following quesitons.
1) Why has this not already been done? Is it a question of a lack of manpower or expertise? If so then I as well as others would most likely be happy to volunteer time to accomplish it.
Avalon has a logger wrapping system. All that needs to be done is rip out the LogKit backed loggers and place in the Log4J ones. That is assuming that all logging components are using LogEnabled as opposed to Loggable.
2) How difficult is it to rip out the avalon logging from the cocoon core components? Im no avalon expert so I couldnt answer this myself.
Not hard at all. The main thing I would advise against is using the static accessors. The components are assigned the categories from the container, and I would prefer to keep it that way.
3) Is there standard expressions that can be used for locatting logging lines in cocoon?
Not sure. No need for it though.
4) Do we upgrade some of the blocks or leave them as is and only upgrade core cocoon?
You only need to upgrade the core cocoon.
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin