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 Tue, 08 Sep 2009 19:37:12 GMT

The JSR-170 spec says nothing about this... So it's entirely possible  
that you end up leaking memory and resources all over the place. :-(

Priha RepositoryManager only caches the default repository instance  
(getRepository()).  Calling  
RepositoryManager.getRepository( "priha.properties" ) gives you a new  
instance every time.

/Janne

On Sep 8, 2009, at 22:13 , Andrew Jaquith wrote:

> Hi Janne --
>
> A little experimentation with the live-install code suggests that  
> Priha's RepositoryManager doesn't know how to un-cache its  
> RepositoryImpl instances. Or to put it differently, there doesn't  
> seem to be a way to reload or restart one.
>
> Thoughts?
>
> On Sep 7, 2009, at 13:04, Janne Jalkanen <janne.jalkanen@ecyrd.com>  
> wrote:
>
>>
>> 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