incubator-jspwiki-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janne Jalkanen <janne.jalka...@ecyrd.com>
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.

/Janne

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

> Andrew,
> see https://issues.apache.org/jira/browse/JSPWIKI-376
>
> 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  
> log4j.properties
> file, and require a webapp reload for the "logging restart" to work.
>
> regards,
> Harry
>
> 2009/9/7 Andrew Jaquith <andrew.r.jaquith@gmail.com>
>
>> 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( "log4j.properties" );
>>       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 bright-green.com. :)
>>
>> 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<andre.van.dalen@siemens.com> 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 [mailto:janne.jalkanen@ecyrd.com]
>>> Sent: maandag 7 september 2009 8:26
>>> To: jspwiki-dev@incubator.apache.org
>>> 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<harry.metske@gmail.com> wrote:
>>>>> Well,
>>>>>
>>>>> we have our own logging layer (org.apache.wiki.log) 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 :
>>>>> http://www.slf4j.org/faq.html#configure_logging
>>>>> 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 <andrew.r.jaquith@gmail.com>
>>>>>
>>>>>> 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 priha.properties
>>>>>> that
>>>>>> needs to be set, but I don't know what it is.
>>>>>>
>>>>>> Andrew
>>>>>>
>>>>>
>>>
>>>
>>


Mime
View raw message