incubator-jspwiki-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janne Jalkanen <>
Subject Re: Restart logging?
Date Mon, 07 Sep 2009 20:04:35 GMT

I'm not sure anybody thinks that slf4j was a bad idea :-).  I think  
Andrew's solution below is ok (though we might want to use Reflection  
to find the PropertyConfigurator).  It's good enough for first-use  
experience certainly, since we ship with log4j enabled by default.  
Besides, since Install.jsp only knows how to configure log4j, we don't  
need this functionality for anyone else either.

Also, I think some log libs know how to reload themselves if you  
change the config file.


On 7 Sep 2009, at 21:55, Harry Metske wrote:

> Andrew,
> see
> We have implemented slf4j to abstract away from specific logging
> implementations.
> PropertyConfigurator is a log4j specific class, if you would  
> directly use
> that class as coded below, you would revert all the effort done in
> JSPWIKI-376 and we would rely again on log4j.
> What you should at least do is first check if log4j is on the  
> classpath and
> then use reflection to get to the PropertyConfigurator. If there is  
> no log4j
> on the classpath we should disappoint the user by saying "sorry, no  
> log4j
> present, we can't do reconfigure logging right now".
> LoggerFactory.registerLoggerMBean does a similar classpath-check/ 
> reflection
> trick.
> If we all think that slf4j abstraction wasn't a good idea because we  
> have
> thrown away all the log4j-specific goodies, we should get rid of slf4j
> again, thereby reverting JSPWIKI-376. (vote ?)
> A sort of meet in the middle might be to only change the  
> file, and require a webapp reload for the "logging restart" to work.
> regards,
> Harry
> 2009/9/7 Andrew Jaquith <>
>> Ok, I figured it out. Google is my friend. I simply added this to the
>> [new] WikiEngine.restart() method:
>>       LogManager.resetConfiguration();
>>       ClassLoader cl = this.getClass().getClassLoader();
>>       URL log4jprops = cl.getResource( "" );
>>       if (log4jprops != null)
>>           PropertyConfigurator.configure(log4jprops);
>> ...and that's all it took. I'll check this in soon.
>> Hat-tip goes to Alan Green at :)
>> Now, this might not work if somebody swaps out their logging
>> configuration, so we might want to add in some safeguards to see if
>> Log4j is actually being used. But to Janne's point, this is about the
>> first-use experience. Which has now improved dramatically. :)
>> Andrew
>> On Mon, Sep 7, 2009 at 5:43 AM, Dalen, Andre
>> van<> wrote:
>>>> Another possibility is to switch to Simple logging, which always  
>>>> goes
>>>> to stdout - in Tomcat's case, catalina.out.  Then there would be no
>>>> need to provide configuration on Install.jsp, which would  
>>>> simplify our
>>>> install process even more.
>>> Such simple logging would not give enough control on resource use.
>>> It would be better imho to switch to log4j instead.
>>> Eventually a reload is shorthand for the sequence shutdown, startup.
>>> Logging libraries should give their user control over when the  
>>> shutdown
>>> happens
>>> exactly, so I would assume a reload won't be a problem if  
>>> implemented
>>> as a shutdown of the logging subsystem followed by a startup.
>>>       regards, Andre
>>> -----Original Message-----
>>> From: Janne Jalkanen []
>>> Sent: maandag 7 september 2009 8:26
>>> To:
>>> Subject: Re: Restart logging?
>>> I don't think there's a simple way to do that through slf4j, simply
>>> because log configuration is very specific to the actual logging
>>> library used. For example, java.util.logging has a single global
>>> LogManager, and to restart that one would mean writing our own
>>> ClassLoader...
>>> However, since this is about first-use experience, it's unlikely  
>>> that
>>> someone would both be savvy enough to first switch the logging  
>>> library
>>> - THEN go and apply the easy-install process. So we might get away
>>> simply by reconfiguring whichever logging library we happen to be
>>> shipping with.
>>> Another possibility is to switch to Simple logging, which always  
>>> goes
>>> to stdout - in Tomcat's case, catalina.out.  Then there would be no
>>> need to provide configuration on Install.jsp, which would simplify  
>>> our
>>> install process even more.
>>> /Janne
>>> On 7 Sep 2009, at 00:52, Andrew Jaquith wrote:
>>>> Hi Harry,
>>>> The idea is to configure the wiki, including logging settings,  
>>>> using
>>>> the installer screen. Then, after pressing the "Configure!" button,
>>>> presto! the wiki is configured the way it should be without  
>>>> needing to
>>>> restart the webapp. Instant gratification! It is much better than
>>>> having to restart the webapp.
>>>> Right now, in my local builds, everything *except* the log file  
>>>> change
>>>> seems to work fine. The goal is to have the desired log file  
>>>> location
>>>> (configured via the installer) reflected immediately -- the logs  
>>>> start
>>>> going to that file. So I want to know how best to do that.  
>>>> Whether it
>>>> is JMX or whatever, I don't care. But I am not a logging expert;  
>>>> hence
>>>> the broadcast. If you have ideas I'd like to hear about them.
>>>> Andrew
>>>> On Sun, Sep 6, 2009 at 12:45 PM, Harry
>>>> Metske<> wrote:
>>>>> Well,
>>>>> we have our own logging layer ( which talks to
>>>>> slf4j
>>>>> which talks to a real logging implementation (with log4j as the
>>>>> default).
>>>>> The first two don't have support for configuring logging at all,
>>>>> the writer
>>>>> of slf4j says you also shouldn't :
>>>>> Log4j itself does support dynamic configuration of logging, but
>>>>> that has
>>>>> explicitly not been put in the slf4j interface.
>>>>> We do however have some way of dynamically configuring our  
>>>>> loggers,
>>>>> and
>>>>> that's through the MBeans (currently you have to use jconsole to  
>>>>> do
>>>>> it, but
>>>>> a nice GUI for it would still be nice). This is however limited.
>>>>> So with "restart logging" you could something in that direction,
>>>>> but again,
>>>>> that is limited to log4j, if you run another logging
>>>>> implementation, you are
>>>>> left alone in the dark.
>>>>> BTW, what exactly would be the difference between restarting the
>>>>> engine and
>>>>> reloading the whole webapp ?
>>>>> regards,
>>>>> Harry
>>>>> 2009/9/6 Andrew Jaquith <>
>>>>>> Hi all --
>>>>>> I am doing a bunch of work on the installer/config code. I've
>>>>>> already
>>>>>> got some really cool features implemented (LDAP config and live
>>>>>> testing, Stripesification of the interface, configuration of
>>>>>> multiple
>>>>>> properties files simultaneously...). One thing I would REALLY  
>>>>>> like
>>>>>> to
>>>>>> do is to be able to apply changes to the wiki WITHOUT requiring a
>>>>>> webapp reload.
>>>>>> To that end, I wrote a restart() method for the WikiEngine, and 

>>>>>> it
>>>>>> seems to work perfectly except in one respect: I can't figure out
>>>>>> how
>>>>>> to restart the logging subsystem. Any hints? I'd like to be  
>>>>>> able to
>>>>>> allow the admin to specify the desired log file location, and  
>>>>>> after
>>>>>> restart all of the logging is redirected there.
>>>>>> Actually, there is one more thing: how does one set the Priha  
>>>>>> page
>>>>>> directory? I'm pretty sure there's a setting in
>>>>>> that
>>>>>> needs to be set, but I don't know what it is.
>>>>>> Andrew

View raw message