I've been lurking and have a few thoughts on this thread. I'm currently
involved in some projects that are similar to what's being discussed. So,
I'd like to chime in with my thoughts on the subject.

Persistence should be an option. I can easily envision loading and saving
the log4j configuration data (xml or properties) to/from an external
database. Providing a pluggable interface for this would make it someone
elses problem to provide a persistence mechanism suitable for their own
needs.

But, let's go one step further. Let's say that we're administrating a
cluster of servers. In some cases, I'd like to make one-off changes to one
server only, and not persist them. In other cases, I'd like to make changes
that are persisted (to a database) and made effective across the entire
cluster.
 
Of course, the persistence mechanism should be abstract, allowing
persistence to be done via a filesystem, JNDI, database, etc... And cluster
notification should be abstract as well, allowing one to plug-in a
JavaGroups, JMS, or smoke signal based implementation. Such a notification
mechanism would probably include special 'watcher' implementations to notify
the other nodes of a change.

So, what could be persisted? XML is more comprehensive than the properties
format. So, we'd need to write some code to marshall the configuration graph
to Digester compatible xml. Any 'comments' from the original xml would be
lost. Even simpler would be to serialize the configuration object tree. But
this would not be human readable. That may be okay, however, since it could
be 'visualized' via the JMX console.

Regards, 

Tom Drake
 
-----Original Message-----
From: Rob Butler [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 22, 2004 1:20 PM
To: Log4J Developers List
Subject: Re: reload behavior modification / feature request

Hi,
>
> As to the jmx implementation, I'm not sure if overwriting the initial
> log4j configuration file is the adequate approach. Or in other words, I
> would prefer to not make jmx-manipulations persistent. In our opinion, a
> restarted application e.g. should use the originally defined log4j
> configuration file instead of a possibly temp. log4j jmx-defined setup
> used, e.g., before a crash of the application. What do you think?
>
Depends on your intended purposes.  JMX is a "management" api (and with JMX
remoting now a standardized protocol too).  To me that means when you make a
change, the change is persistent until changed again.  If you use JMX to add
and run a new EAR on a running J2EE server I would expect that EAR to start
the next time I shutdown and restarted the entire app server.  If I only
wanted a change in logging to be temporary I would expect to make the
change - do what I needed to do with the new logging data - and then change
it back again.  If the application were not restarted the logging
modification would stay in place until I changed it again, why shouldn't it
do the same thing even if I restart the app.  In my opinion the problem with
most JMX enabled apps is the modifications are not permanent across
restarts.

Also, developers are not necessarily always aware of an application being
restarted.  Where I work we pretty much have a complete hands off policy for
our production J2EE applications - we aren't allowed to login, etc.
However, we would be allowed to do something like increase the logging level
via JMX, or a web console.  I may do this because I need to gather
additional data over a long period to track down some minor bug.  Should
production support need to down the box to work on hardware or some other
un-related issue on the box I would be pretty upset to find out that my much
needed log data was not collected because the logging change I made via JMX
was "reset" when the box was re-started.   I don't know of many places that
ask a developer if it's ok to bring down a production box to fix hardware,
or software un-related to their app.  They have policies / procedures, etc.
to do all that kind of stuff, but generally the development team is not
consulted.

Later
Rob


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

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

Reply via email to