On Aug 3, 2005, at 9:35 AM, Steve Pruitt wrote:

Logger / level design is my million dollar question.  My application
will have an adminstration console where logging levels, appenders, and layout can be specified. I'm hiding the details of log4j and presenting
them some simple choices.  Log to a console or file.  Select browser
format (i.e. html) or xml format.  Email notification, etc.  They can
also turn logging on or off, or specify INFO or ERROR.

Some sites may only want to track user login and logout sessions. So, I
thought of adding a level named SESSION to facilitate this choice.  I
also need to persist the choices made so when the application is
restarted the logging choices are re-established.  I am trying to do
this without an additional config file - this may be a problem. I plan to modify and write out the log4j config file whenever a change occurs -
hoping I can codify the changes strictly within the confines of the
log4j config file syntax. My thinking is the SESSION level helps me do
this as this specific level doesn't exist.

Using a specific branch in the logger hierarchy for session related logging requests is the right way to do that. The art is to match the logger hierarchy to the potential audiences and their areas of concerns. Most people are introduced to log4j with examples that use the class name as logger name for one and only logger in each class. That is a good pattern for messages for diagnosticians and developers who are familiar with the code base, since they can map the behavior they are investigating to a particular set of classes and turn off everything else.

However, that pattern is not effective when the intended audience is not familiar with the code base or their concerns don't align themselves with the code structure. In this case, it sounds like you have an audience that is interested in either auditing use of the system or looking for potential security concerns and their interests are not organized along class boundaries. If you have an imagined audience that would be interested log in and log out messages, but not diagnostic messages, can you imagine other things that they could also be interested in?

For example, if you have some auditing the use of a system, a successful log in might be of interest and assigned an INFO level. However, repeated unsuccessful logins might warrant a WARN. If there are revalidations of the connection, those might be assigned a DEBUG level. They aren't things that the audience would typically want to know unless they are investigating a problem.

I'd start by using a logger named "session", "security.session", "audit.session" or similar and then branch out into the other areas of concern for this imagined audience.



As all good frameworks, log4j gives lots of options and flexibility.
I'm thinking of a logger hierarchy where the appender is the -
potentially - least used as you go up the hierarchy.  Something like
File -> Console - > Email.  I hope this makes sense.


Sorry, didn't follow that paragraph.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to