On Fri, Jul 30, 2010 at 3:44 PM, Scott Blum <[email protected]> wrote:

> Okay, taking this all together, I'm wondering if the following approach
> works, or if there's a flaw in it:
>
> - Rewrite any calls that would utilize or return the default LogManager.
>  (LogManager.getLogManager(), Logger.getLogger()).
>
> - Return your own subclass of LogManager instead, which would serve as an
> isolated world completely detached from the real JRE (maybe the old
> DevModeLogManager already does this correctly?)
>
> So basically, you get the effect of replacing the system property, but
> without actually replacing the system property.  Since you can't rewrite the
> JRE method bodies (Logger.getLogger()), you just intercept those calls.
>  Should just be a handful, right?
>
> I'm not necessarily saying this is the best route, but would it result in a
> solid system?
>
>
I think that would only work if I rewrote every function whose internal
(JRE) implementation included a call to LogManager.getLogManager().  I can
take a closer look, but this seems kind of dicey to me...



>
> On Fri, Jul 30, 2010 at 6:19 PM, Unnur Gretarsdottir <[email protected]>wrote:
>
>>
>>
>> On Fri, Jul 30, 2010 at 2:39 PM, <[email protected]> wrote:
>>
>>> All of the dev and GWT stuff LGTM.  I don't really understand all the
>>> nuances of the logging plumbing, though.  You might want a second pair
>>> of eyes, unless you're really confident in that part.
>>>
>>> Questions:
>>>
>>> 1) Why do you need to prefix the logger name at all?  If we've got our
>>> own LogManager in DevMode, it can be its own isolated world right?  It's
>>> very muddy to me to what extent this implementation creates an isolated
>>> logger world per client vs. tries to integrate with the JRE.  The former
>>> option seems cleaner and wouldn't seem to require the unique thread id
>>> stuff.
>>>
>>> We no longer have our own LogManager - that code/hack is now removed
>> because there's no way to reliably swap in the DevModeLogManager in a way
>> that works for GAE apps in dev mode (and we have no idea if other crazy
>> configurations would have the same issue).
>>
>>
>>> 2) Are you subclassing LogManager on the back side to remove the
>>> aforementioned prefix?
>>
>> No - see the previous comment.  The hack to use the DevModeLogManager by
>> setting the system property will not work with GAE apps. We can't use the
>> DevModeLogManager by bytecode rewriting because the primary class that calls
>> the LogManager is the Logger class, and the Logger class won't get bytecode
>> rewritten since it is a JRE class.
>>
>>
>>>  Seems like you'd want to, otherwise
>>> Logger.getName() doesn't return the right value relative to user
>>> expectation.
>>>
>>
>> Yes - this is true - I mentioned this in the wave.  Also -
>> LogManager.getLoggger() will not work as expected.  In reality,
>> LogManager.getLogger() is rarely used - I'm considering just removing it
>> from the set of functions that GWT logging emulates.  For Logger.getName(),
>> it's more complicated - for now, we're just living with the fact that the
>> logger name is different in Dev mode...
>>
>>
>>>
>>> 3) Are there GWTTestCases for Logging that need update?
>>>
>>>
>>>
>>> http://gwt-code-reviews.appspot.com/725801/show
>>>
>>
>>
>

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to