[EMAIL PROTECTED] wrote:
On Nov 28, 2005, at 6:28 PM, Trenton D. Adams wrote:
I can't see using anything other than the root logger. Can you? Am
I missing something?
I have 3 reasons for using loggers other than the root logger:
1. Differential logging levels.
In both development, and in production, it is sometimes useful to
increase the logging verbosity for specific classes and packages. We
do this to help identify where problems are originating. In Production
especially, this is an important tool because we can't put the
production applications into debug to trace through the code and
determine where a problem originates.
Can't that be done by simply configuring log4j to increase log level for
only those classes? For example by adding
"log4j.logger.ca.athabascau=DEBUG" to the log4j.properties, where
"ca.athabascau" is a package name. Or is the "ca.athabascau" part
related to the category, and not the class name? Given that I make
loggers based on package/class name, I'm not sure. However, the short
manual indicates that the "ca.athabascau" part is for filtering based on
package name, and not category name.
2. Many applications running under a single JVM.
Our company uses webMethods. webMethods has a piss-poor logging
architecture but fortunately it is a Java-based middle-ware server.
To get better logging granularity, I created a log4j wrapper service
within webMethods.
Because all our webMethods projects run under a single webMethods
server which runs under a single JVM, we create separate appender/
logger pairs for each project. The appenders identify the separate log
files for each project, and the loggers specify the package starting
point for each project and allow each project to have separate log
levels that are relevant to that project's needs.
In our webMethods environment, we use the root logger as a default
logger for our common services and for those projects that do not
properly create their project-specific logger.
This is a basic paradigm which should work for any environment where
many disparate applications must run under a single JVM.
3. Specialized logging.
The MyJXTA2 project (http://myjxta2.jxta.org/) is an Open Source chat
program built on the JXTA networking infrastructure. In MyJXTA2 there
is the general logger defined by the root logger and various appenders
that may be used for File, Console or XML output. Then, there is a
specialized Chat Log Appender. This appender has a filter used to
specify only the Chat text (no other trace, debug, info, warning or
error info is captured by this appender). This appender creates a
stripped-down log message which does not contain most of the "normal"
logging information (e.g., class name, logging level, MDC, NDC, etc.).
There is a separate MyJXTA2 Chat Logger that specifies the single Class
that processes all the chat text and the info level that is used by
this class when logging chat text. No matter what kind of level is
being spcified for the root logger, this separate logger ensures that
we can always have a chat log.
So, yes. There are reasons for using loggers other than the root logger.
Mike McAngus
--
Trenton D. Adams
Systems Analyst/Web Software Engineer
Navy Penguins at your service!
Athabasca University
(780) 675-6195
:wq!
__
This communication is intended for the use of the recipient to whom it
is addressed, and may contain confidential, personal, and or privileged
information. Please contact us immediately if you are not the intended
recipient of this communication, and do not copy, distribute, or take
action relying on it. Any communications received in error, or
subsequent reply, should be deleted or destroyed.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]