persistence@glassfish.java.net

Re: Re1: Code review for: [Issue 1107] Logger defined by a property doesn't work]

From: Tom Ware <tom.ware_at_oracle.com>
Date: Tue, 17 Oct 2006 15:05:06 -0400

Hi Marina,

  In general, I think the code looks good.

  A couple comments below related to Wonsoek's earlier comments:


Wonseok Kim wrote:

> Marina,
> Some comments...
>
> 1. Could you update the default level with INFO in
> PropertiesHandler.LoggingLevelProp class?
>
> protected static class LoggingLevelProp extends Prop {
> LoggingLevelProp() {
> super(TopLinkProperties.LOGGING_LEVEL,
> Level.CONFIG.getName());
>
> Also this should be updated in the TopLink JPA documentation.
> http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-extensions.html#TopLinkLogging
>
I agree.

> 2. If a user specify the toplink.session-name property, your code will
> use the default namespace(" oracle.toplink.essentials.default"). I
> think it should be considered in setServerSessionName().


This is important. The user specified name should definitely be considered.

>
> 3. I would like to know there is a resolution about the level for a
> specific category. DefaultSessionLog doesn't support this. JavaLog
> supports this but it is not easy to set the level by a user - should
> know the generated session name(long and location dependent).
> It would be very useful if a user can set the level of 'sql' category
> to see only the generated SQLs. Another property like
> "toplink.logging.level.<category>" can be an option for this. Is there
> any idea?

We should definitely add an issue to ensure the categories work.

-Tom

>
> Others look good to me.
>
> Thanks,
> - Wonseok
>
> On 10/17/06, *Marina Vatkina* <Marina.Vatkina_at_sun.com
> <mailto:Marina.Vatkina_at_sun.com>> wrote:
>
> Tom, Wonseok, Mitesh,
>
> Please review the changes. They combine the discussions in this
> thread
> and CONFIG log messages in the (short) other.
>
> thanks,
> -marina
>
> Tom Ware wrote On 10/16/06 13:55,:
> >
> > Marina Vatkina wrote:
> >
> >
> >>Hi Tom,
> >>
> >>Tom Ware wrote On 10/16/06 07:09,:
> >>
> >>
> >>
> >>>Hi Marina,
> >>>
> >>> Lets not add the separate property for now and continue to set
> both
> >>>loggers at initialization time. I think the issue with the
> default
> >>>logger being set by each persistence unit is one that will have
> a fairly
> >>>low impact on users.
> >>>
> >>>
> >>
> >>RI agree. With the only exception that its name is "...default".
> >>
> >>But before I finalize my changes, I have one more question: all
> the changes
> >>to the logger names are being done in the JavaLog class which
> means that
> >>they have no affect on SE loggers unless the users specify the
> new option
> >>added by Wonseok. But you are concerned about the session name.
> So how does
> >>the user-specified session name come into the picture?
> >>
> >>
> >
> > As long as the session has the correct name at the time we
> initialize
> > the loggers, it should not matter whether the use has specified the
> > session name or we have defaulted it.
> >
> >
> >>
> >>
> >>
> >>> Perhaps we should enter an enhancement that says something like:
> >>>Currently the Default logger is used for some of the initial setup
> >>>messages in JPA. Changing the logging level in JPA affects the
> logging
> >>>level of the default logger and therefore potentially affects
> users of
> >>>the default logger outside of the persistence unit. TopLink
> should be
> >>>enhanced to allow persistence units to log messages before the
> session
> >>>is available at all the available levels without having the log
> level
> >>>for the persistence unit affect future users of the default log.
> >>>
> >>>
> >>
> >>We have an IT that says that AbstractSessionLog is being
> constantly changed:
> >> https://glassfish.dev.java.net/issues/show_bug.cgi?id=1113. Do
> you want to
> >>change that one, or file another? Feel free to do either one.
> >>
> >>
> >
> > That one looks fine.
> >
> > -Tom
> >
> >
> >>thanks,
> >>-marina
> >>
> >>
> >>
> >>
> >>>-Tom
> >>>
> >>>Marina Vatkina wrote:
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>Hi Tom,
> >>>>
> >>>>This is not a problem. Do you want to be able to set the
> default logger
> >>>>level from a separate PU property (if yes, in all envs or Java
> SE only)?
> >>>>
> >>>>thanks,
> >>>>-marina
> >>>>
> >>>>Tom Ware wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>Hi Marina,
> >>>>>
> >>>>>How about the following:
> >>>>>
> >>>>>1. Change the namespace for the default logger to
> >>>>>"oracle.toplink.essentials.default".
> >>>>>2. Change the namespace for the session loggers to
> >>>>>"oracle.toplink.essentials.session.<sessionName>
> >>>>>
> >>>>>That way we can avoid a clash between the default logger and the
> >>>>>session loggers.
> >>>>>
> >>>>>What do you think?
> >>>>>-Tom
> >>>>>
> >>>>>Marina Vatkina wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Hi Tom,
> >>>>>>
> >>>>>>What behavior would you like to see (keeping in mind that
> >>>>>>AbstractSessionLog
> >>>>>>doesn't have a name, and is used only for a limited
> pre-session-creation
> >>>>>>configuration).
> >>>>>>
> >>>>>>BTW, now that we create a session and name it at the time we
> create
> >>>>>>the loggers,
> >>>>>>can we get rid of the AbstractSessionLog instance altogether?
> >>>>>>
> >>>>>>thanks,
> >>>>>>-marina
> >>>>>>
> >>>>>>Tom Ware wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>Hi Marina,
> >>>>>>>
> >>>>>>>The reason I am concerned (and the reason I am slow getting
> back to
> >>>>>>>you) is that all of the following make it so there is a
> session name
> >>>>>>>is a "reserved word" since the namespace for a session is
> >>>>>>>oracle.toplink.essentials.<sessionName>
> >>>>>>>
> >>>>>>>- oracle.toplink.essentials.default
> >>>>>>>- oracle.toplink.essentials.default-logger
> >>>>>>>- oracle.toplink.essentials.non-session
> >>>>>>>
> >>>>>>>I am trying to figure out if there is a reasonable way to
> solve this
> >>>>>>>problem and avoid having a session name that behaves
> differently (no
> >>>>>>>matter how obscure the name ends up being). In addition, I
> am hoping
> >>>>>>>to keep the name spaces so they are intuitive.
> >>>>>>>
> >>>>>>>-Tom
> >>>>>>>
> >>>>>>>Marina Vatkina wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>Tom,
> >>>>>>>>
> >>>>>>>>One more thought: may be we should assign
> AbstractSessionLog namespace
> >>>>>>>>called oracle.toplink.essentials.non-session or something
> to that
> >>>>>>>>extent?
> >>>>>>>>It's not a default logger, and a different name will
> clarify a lot
> >>>>>>>>of confusion.
> >>>>>>>>
> >>>>>>>>thanks,
> >>>>>>>>-marina
> >>>>>>>>
> >>>>>>>>Marina Vatkina wrote:
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>>Hi Tom,
> >>>>>>>>>
> >>>>>>>>>Tom Ware wrote:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>Hi Marina,
> >>>>>>>>>>
> >>>>>>>>>>Comments inline.
> >>>>>>>>>>
> >>>>>>>>>>Marina Vatkina wrote:
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>Hi Tom,
> >>>>>>>>>>>
> >>>>>>>>>>>About the name (your other email) - we can use
> something else
> >>>>>>>>>>>other than
> >>>>>>>>>>>"default", or we can document that a session named
> "default" will
> >>>>>>>>>>>have
> >>>>>>>>>>>the same log level as the default logger (whether
> explicitly
> >>>>>>>>>>>specified
> >>>>>>>>>>>or not).
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>I have a strong preference towards a solution that does
> not not
> >>>>>>>>>>make any potential session names into "reserved words"
> and will
> >>>>>>>>>>required some convincing that a solution that makes any
> session
> >>>>>>>>>>name into a "reserved word" is the only reasonable way
> forward.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>No problem. Worth discussing ;)
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>>Here are my thoughts about the options:
> >>>>>>>>>>>
> >>>>>>>>>>>Tom Ware wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>I am still brainstorming for ideas. So far here's all
> I have
> >>>>>>>>>>>>come up with.
> >>>>>>>>>>>>
> >>>>>>>>>>>>1. Do not change the namespace
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>We know it causes all types of problems if PU
> properties apply to
> >>>>>>>>>>>the AbstractSessionLog.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>That's why I am trying to figure out an alternate way of
> dealing
> >>>>>>>>>>with the default logger stored on AbstractSessionLog.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>2. Add a property that allows the default TopLink
> logging level
> >>>>>>>>>>>>to be set. ( toplink.logging.level.default or
> something like that).
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>Do you mean for the AbstractSessionLog to ignore the
> current
> >>>>>>>>>>>toplink.logging.level specified in a PU and use the
> default unless
> >>>>>>>>>>>explicitly specified by the toplink.logging.level.default?
> >>>>>>>>>>>Can be an option.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>Your interpretation of my suggestion is correct. I am
> open to
> >>>>>>>>>>other suggestions as well.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>3. Document the new property as the only way to change the
> >>>>>>>>>>>>logging level for pre-session-creation configuration
> (i.e.the
> >>>>>>>>>>>>only way to change the logging level of the default
> logger on
> >>>>>>>>>>>>AbstractSessionLog). Also, document the fact that
> setting the
> >>>>>>>>>>>>value of this property in any persistence unit could
> affect
> >>>>>>>>>>>>other persistence units and will override any parent
> logging
> >>>>>>>>>>>>setting.
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>No, it shouldn't override the parent, i.e.
> >>>>>>>>>>>toplink.logging.level.default
> >>>>>>>>>>>will not affect
> >>>>>>>>>>>toplink.logging.level.<very-long-constructed-session-name>.
>
> >>>>>>>>>>>This was the reason to add its own name to the default
> logger.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>First, in case my phrasing was not clear, by "override
> the parent"
> >>>>>>>>>>I simply mean using that property to specify the logging
> level for
> >>>>>>>>>>"oracle.toplink.essentials" - not changing the logging
> level on
> >>>>>>>>>>the parent logger.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>" oracle.toplink.essentials" is the parent logger for all
> other
> >>>>>>>>>loggers.
> >>>>>>>>>The goal is to never set the level on that particular
> logger from any
> >>>>>>>>>of the PU properties.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>Assuming my initial phrasing was adequately understood,
> I am not
> >>>>>>>>>>sure I understand what you are saying here. If someone
> specifies
> >>>>>>>>>>toplink.logging.level.default, they are explicitly setting a
> >>>>>>>>>>logging level. Why shouldn't that set the level for
> >>>>>>>>>>" oracle.toplink.essentials"?
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>Setting the level for "oracle.toplink.essentials"
> explicitly breaks GF
> >>>>>>>>>integration, as it will not be possible to reset it to
> defaults
> >>>>>>>>>dynamically:
> >>>>>>>>>the default value is not set on
> "oracle.toplink.essentials" - it's
> >>>>>>>>>a property
> >>>>>>>>>that is not present for the defaults, but by Java logging
> defaults,
> >>>>>>>>>i.e.
> >>>>>>>>>"" logger in our case.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>The one strange thing this setting does is
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>it potentially has side effects for the next user of the
> default
> >>>>>>>>>>log. This setting is one that is likely to be only used
> while
> >>>>>>>>>>debugging (and infrequently, even then) due to the fact
> that there
> >>>>>>>>>>are very few messages at a more granular level that
> INFO(the
> >>>>>>>>>>default) that are written to the default logger. As a
> result, I
> >>>>>>>>>>am willing to live with that side effect as long as we
> adequately
> >>>>>>>>>>document it.
> >>>>>>>>>>
> >>>>>>>>>>What if we change the setting to
> toplink.logging.level.config or
> >>>>>>>>>> toplink.logging.level.default-logger, and ensure it
> does not have
> >>>>>>>>>>any effect on the session loggers.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>Yes, we can have toplink.logging.level.default-logger
> mapped to the
> >>>>>>>>>"oracle.toplink.essentials.default-logger" namespace,
> which will
> >>>>>>>>>not affect
> >>>>>>>>>any session loggers, but will use the same global
> defaults if not
> >>>>>>>>>set explicitly.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>4. Only use the existing property (
> toplink.logging.level) to set
> >>>>>>>>>>>>the level of the session's log.
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>This will require a redeploy to apply a change, and
> doesn't solve
> >>>>>>>>>>>the
> >>>>>>>>>>>problem of having separate log levels for separate PUs.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>What conditions cause us to need a redeploy for a change?
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>If a user once specified a toplink.logging.level in the
> >>>>>>>>>persistence.xml,
> >>>>>>>>>they can't just remove that property to get the defaults.
> They need to
> >>>>>>>>>redeploy either way if they change persistence.xml, but
> they'll
> >>>>>>>>>need to
> >>>>>>>>>either reset it to INFO, or restart the server after the
> redeploy
> >>>>>>>>>to get
> >>>>>>>>>the defaults.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>If toplink.logging.level sets only the level of the
> sessions log.
> >>>>>>>>>>(i.e. for session "session1", only the logger in namespace
> >>>>>>>>>>"oracle.toplink.essentials.session1" is affected),
> doesn't this
> >>>>>>>>>>solve the problem of having separate log levels for
> separate PUs?
> >>>>>>>>>>Please forgive me if I am being missing something obvious.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>Yes. It does. I think we now go in circles around the
> following
> >>>>>>>>>proposal:
> >>>>>>>>>
> >>>>>>>>>1. Existing toplink.logging.level property to affect only
> session
> >>>>>>>>>loggers.
> >>>>>>>>>2. Introduce toplink.logging.level.default-logger
> property that
> >>>>>>>>>will affect
> >>>>>>>>>AbstractSessionLog only and will be global for all PUs in
> this VM.
> >>>>>>>>>
> >>>>>>>>>As we didn't discuss the categories behavior so far,
> >>>>>>>>>3. It's not possible to choose for a user a separate log
> level for
> >>>>>>>>>separate
> >>>>>>>>>category.
> >>>>>>>>>
> >>>>>>>>>Do you agree?
> >>>>>>>>>
> >>>>>>>>>thanks,
> >>>>>>>>>-marina
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>-Tom
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>I haven't completely thought it out, but figured I
> pass on the
> >>>>>>>>>>>>idea to start the discussion.
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>yes, let's sort it out (and document the result).
> >>>>>>>>>>>
> >>>>>>>>>>>thanks,
> >>>>>>>>>>>-marina
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>-Tom
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>Tom Ware wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>>Hi Marina,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>Thanks for the lesson:)
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>As far as changing the namespace for the default
> logger to
> >>>>>>>>>>>>>"oracle.toplink.essentials.default", I have a
> concern. Isn't
> >>>>>>>>>>>>>this the same namespace as a session called
> "default"? I
> >>>>>>>>>>>>>believe this could cause problems.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>I still need to do some thinking about the issue of
> how we deal
> >>>>>>>>>>>>>with the logging level of the default Logger. It
> seems to me
> >>>>>>>>>>>>>to potentially be an issue regardless of what we do
> about this
> >>>>>>>>>>>>>bug. I'll let you know what I come up with.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>I think Wonsoek has replied to your question about
> the default
> >>>>>>>>>>>>>logging levels. Please let me know if you have
> additional
> >>>>>>>>>>>>>questions.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>-Tom
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>Marina Vatkina wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>>Tom, Wonseok,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Yes, I should've extracted the relevant portion into
> >>>>>>>>>>>>>>setServerSessionName
> >>>>>>>>>>>>>>(don't know why I missed half of the code :( - sorry
> about that).
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Yes, it should be ".default".
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>The categories are appended to each name space, and
> I'm not
> >>>>>>>>>>>>>>sure the categories
> >>>>>>>>>>>>>>are implemented correctly now in the JavaLog if they are
> >>>>>>>>>>>>>>expected to be
> >>>>>>>>>>>>>>specified by the user. But let's discuss this
> further, and see
> >>>>>>>>>>>>>>where is the
> >>>>>>>>>>>>>>right solution.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Here is the problem that I'm trying to solve.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Java loggers use parent's level if it is not
> explicitly set,
> >>>>>>>>>>>>>>but use its own
> >>>>>>>>>>>>>>level otherwise. There is no way to unset a level,
> once it's
> >>>>>>>>>>>>>>set explicitly.
> >>>>>>>>>>>>>>The namespace is registered with the LogMgr in the
> VM, which
> >>>>>>>>>>>>>>means that as long
> >>>>>>>>>>>>>>as you use the same name, you are getting the same
> Java logger
> >>>>>>>>>>>>>>instance.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Now, if a log level is specified in a
> persistence.xml as a
> >>>>>>>>>>>>>>property, we do set
> >>>>>>>>>>>>>>it currently on the default logger by processing
> >>>>>>>>>>>>>>AbstractSessionLog in
> >>>>>>>>>>>>>>initOrUpdateLogging (which without ".default" equals
> to the
> >>>>>>>>>>>>>>overall TopLink namespace of "
> oracle.toplink.essentials") ,
> >>>>>>>>>>>>>>i.e. any other PU after that will
> >>>>>>>>>>>>>>use that level (if it doesn't specify it
> explicitly), or will
> >>>>>>>>>>>>>>override it again
> >>>>>>>>>>>>>>with its own setting if it is different. Which means
> that 2
> >>>>>>>>>>>>>>PUs can't have 2
> >>>>>>>>>>>>>>different logging levels.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Adding ".default" will give AbstractSessionLog it's own
> >>>>>>>>>>>>>>sub-space.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Setting the ServerSession name much earlier, gives
> each PU
> >>>>>>>>>>>>>>it's own sub-space.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Now the subcategories (I had never tested, how would
> it work
> >>>>>>>>>>>>>>in GF): the
> >>>>>>>>>>>>>>current code constructs the corresponding namespace as:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>sessionNameSpace = DEFAULT_TOPLINK_NAMESPACE + "." +
> sessionName;
> >>>>>>>>>>>>>>String loggerNameSpace = sessionNameSpace + "." +
> loggerCategory;
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>It might be better to have it as
> >>>>>>>>>>>>>>DEFAULT_TOPLINK_NAMESPACE + "." + loggerCategory +
> sessionName;
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Right?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>I need to think more about changing the session name
> - we
> >>>>>>>>>>>>>>can't unregister
> >>>>>>>>>>>>>>a logger from a LogMgr, so changing a name will mean
> creating
> >>>>>>>>>>>>>>new loggers,
> >>>>>>>>>>>>>>right?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Tom, about the new useParentLevel() - will it be OFF
> or INFO
> >>>>>>>>>>>>>>by default,
> >>>>>>>>>>>>>>if you don't specify the level in SE? Can you check?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>thanks,
> >>>>>>>>>>>>>>-marina
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>Tom Ware wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>Marina and Wonsoek,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>- Can you explain a bit more why you need to append
> >>>>>>>>>>>>>>>".default" to the default log namespace. How will
> this work
> >>>>>>>>>>>>>>>in conjuction with the logger categories? How
> exactly is the
> >>>>>>>>>>>>>>>current namespace causing issues? Will users have
> to now
> >>>>>>>>>>>>>>>specify ".default" on all their categories? ( e.g.
> >>>>>>>>>>>>>>>oracle.toplink.essentials.default.sql) To me, this
> seems a
> >>>>>>>>>>>>>>>bit less intuitive than being able to set the
> logging levels
> >>>>>>>>>>>>>>>without the "default".
> >>>>>>>>>>>>>>>- BTW: Assuming we can sort out the "default", I
> think the
> >>>>>>>>>>>>>>>namespace is currently missing a dot. It looks
> like it is
> >>>>>>>>>>>>>>>oracle.toplink.essentialsdefault.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>Additional comments inline:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>Wonseok Kim wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Hi Marina,
> >>>>>>>>>>>>>>>>comments in line...
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>On 10/12/06, *Marina Vatkina* <
> Marina.Vatkina_at_sun.com <mailto:Marina.Vatkina_at_sun.com>
> >>>>>>>>>>>>>>>><mailto:Marina.Vatkina_at_sun.com
> <mailto:Marina.Vatkina_at_sun.com>>> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Tom, Wonseok,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Please review the changes.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Major points are described below in the IT note.
> Other diffs:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>a) renamed initServerSession() to
> setServerSessionName(),
> >>>>>>>>>>>>>>>>removed
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>from it the
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>call to assignCMP3Policy(), and changed the
> javadoc comments as
> >>>>>>>>>>>>>>>>they didn't
> >>>>>>>>>>>>>>>>reflect the actual things happening in the method
> anyway;
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>b) changed to call assignCMP3Policy() directly in
> place of the
> >>>>>>>>>>>>>>>>previous
> >>>>>>>>>>>>>>>>initServerSession() call;
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>c) moved the call to setServerSessionName() to the
> beginning of
> >>>>>>>>>>>>>>>>predeploy (see
> >>>>>>>>>>>>>>>>the reason #3 below).
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Tom, do you see any problem with registering the
> session by
> >>>>>>>>>>>>>>>>name
> >>>>>>>>>>>>>>>>so early? I
> >>>>>>>>>>>>>>>>couldn't find any code in the
> EntityManagerSetupImpl that would
> >>>>>>>>>>>>>>>>suggest that
> >>>>>>>>>>>>>>>>it can be.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>1. Original initServerSession() does another
> things. Those
> >>>>>>>>>>>>>>>>calls session.getDescriptors() but this is filled in
> >>>>>>>>>>>>>>>>predeploy phase. Therefore I think this should not
> be called
> >>>>>>>>>>>>>>>>before predeploy finishes.
> >>>>>>>>>>>>>>>>How about making a new method "initSessionName()" by
> >>>>>>>>>>>>>>>>extracting only the following code?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>// use default session name if none is provided
> >>>>>>>>>>>>>>>>String name =
> >>>>>>>>>>>>>>>>EntityManagerFactoryProvider.getConfigPropertyAsString(TopLinkProperties.SESSION_NAME
> ,
> >>>>>>>>>>>>>>>>m);
> >>>>>>>>>>>>>>>>if(name == null) {
> >>>>>>>>>>>>>>>> if (
> persistenceUnitInfo.getPersistenceUnitRootUrl()
> >>>>>>>>>>>>>>>>!= null){
> >>>>>>>>>>>>>>>> name =
> >>>>>>>>>>>>>>>>
> persistenceUnitInfo.getPersistenceUnitRootUrl().toString() +
> >>>>>>>>>>>>>>>>"-" + persistenceUnitInfo.getPersistenceUnitName();
> >>>>>>>>>>>>>>>> } else {
> >>>>>>>>>>>>>>>> name =
> persistenceUnitInfo.getPersistenceUnitName();
> >>>>>>>>>>>>>>>> }
> >>>>>>>>>>>>>>>> session.setName(name);
> >>>>>>>>>>>>>>>>// session.log(SessionLog.FINEST,
> >>>>>>>>>>>>>>>>SessionLog.PROPERTIES , "property_value_default", new
> >>>>>>>>>>>>>>>>Object[]{TopLinkProperties.SESSION_NAME , name});
> >>>>>>>>>>>>>>>> addSessionToGlobalSessionManager();
> >>>>>>>>>>>>>>>>}
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>I think Wonsoek's suggestion is a good one. Let's
> only move
> >>>>>>>>>>>>>>>the session name initialization code, and not the other
> >>>>>>>>>>>>>>>code. The initServerSession() method does more than
> >>>>>>>>>>>>>>>initialize the name.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>2. (To Tom) Is it safe to call
> >>>>>>>>>>>>>>>>addSessionToGlobalSessionManager() in this early
> step (with
> >>>>>>>>>>>>>>>>uninitialized session)?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>There is really one issue with this call we should
> resolve.
> >>>>>>>>>>>>>>>Details in the next item.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>3. What if SESSION_NAME is set by user explicitly?
> Now
> >>>>>>>>>>>>>>>>user-specified name is set later by
> updateSessionName()
> >>>>>>>>>>>>>>>>which is called from updateServerSession() in
> deploy phase.
> >>>>>>>>>>>>>>>>I think we need to set this user-specified name in
> >>>>>>>>>>>>>>>>"initSessionName()" also. But current code appears
> to allow
> >>>>>>>>>>>>>>>>changing session name in deploy(). Then should
> logger should
> >>>>>>>>>>>>>>>>change? I'm confused.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>When we are integrated with the Server, I
> believe, predeploy
> >>>>>>>>>>>>>>>and deploy will be called with the same properties and
> >>>>>>>>>>>>>>>therefore, the call to updateSessionName() should
> result in
> >>>>>>>>>>>>>>>the same name as the call to initSessionName().
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>In SE, the predeploy occurs before the call to
> >>>>>>>>>>>>>>>createEntityManagerFactory(name, properties) and
> the deploy
> >>>>>>>>>>>>>>>occurs after. The properties specified in the
> argument to
> >>>>>>>>>>>>>>>createEntityManagerFactory() that method need to be
> >>>>>>>>>>>>>>>considered. That is why the call is made in deploy
> as well.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>As a result of this, there is an issue we have to
> resolve in
> >>>>>>>>>>>>>>>SE if we are calling
> addSessionToGlobalSessionManager()
> >>>>>>>>>>>>>>>before the deploy phase.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>- What happens if we initialize with a session
> name, and the
> >>>>>>>>>>>>>>>call to createEntityManagerFactory() has a
> different name.
> >>>>>>>>>>>>>>>In this case, we cannot simply change the session name
> >>>>>>>>>>>>>>>because sessions are hashed in SessionManager based
> on their
> >>>>>>>>>>>>>>>name, so changing the name of the session will
> result in
> >>>>>>>>>>>>>>>lookup problems.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>4. (To Tom) This is another concern but related to
> #3. What
> >>>>>>>>>>>>>>>>is the behaviour of session name property? If I
> specify the
> >>>>>>>>>>>>>>>>same session name of two applications or two
> persistence
> >>>>>>>>>>>>>>>>units, could I share ServerSession? But it doesn't
> seem to
> >>>>>>>>>>>>>>>>do it, because in
> EntityManagerSetupImpl.predeploy() session
> >>>>>>>>>>>>>>>>is always newly created like below regardless of
> the session
> >>>>>>>>>>>>>>>>name.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>session = new ServerSession(...);
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>If session name property has no effect in JPA, I
> think it
> >>>>>>>>>>>>>>>>should be removed and then there will be no
> confusion in #3.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>Session name is used to store the session we use on
> the
> >>>>>>>>>>>>>>>SessionManager. We expect the session name to be
> unique. If
> >>>>>>>>>>>>>>>it is not, an exception will be thrown when the
> session is
> >>>>>>>>>>>>>>>added to the SessionManager. Take a look at the
> >>>>>>>>>>>>>>>addSessionToGlobalSessionManager() method.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>d) I added an api to the SessionLog to allow for
> #1 below.
> >>>>>>>>>>>>>>>>Another
> >>>>>>>>>>>>>>>>option would
> >>>>>>>>>>>>>>>>be to check for the log level being OFF, but it's
> more time
> >>>>>>>>>>>>>>>>consuming to go up
> >>>>>>>>>>>>>>>>the logging chain every time.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Then in Java SE, the default level of JavaLogger
> becomes
> >>>>>>>>>>>>>>>>INFO while CONFIG is a default for DefaultLogger.
> It appears
> >>>>>>>>>>>>>>>>to be inconsistent for the default level. I don't
> know why
> >>>>>>>>>>>>>>>>the default level has been CONFIG for TopLink
> logger, how
> >>>>>>>>>>>>>>>>about changing it to INFO consistently. Then we
> don't need
> >>>>>>>>>>>>>>>>to set default level explicitly and to introduce
> new method
> >>>>>>>>>>>>>>>>"userParentLevel()" to SessionLog interface.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>protected void initOrUpdateLogging(boolean init,
> Map m,
> >>>>>>>>>>>>>>>>SessionLog log) {
> >>>>>>>>>>>>>>>>String logLevelString =
> >>>>>>>>>>>>>>>>PropertiesHandler.getPropertyValueLogDebug
> >>>>>>>>>>>>>>>>( TopLinkProperties.LOGGING_LEVEL, m, session);
> >>>>>>>>>>>>>>>>// Don't need to set default level. It will follow the
> >>>>>>>>>>>>>>>>default level policy of the logger. INFO for
> >>>>>>>>>>>>>>>>DefaultSessionLog. Parent logger's level(INFO
> normally) for
> >>>>>>>>>>>>>>>>JavaLog.
> >>>>>>>>>>>>>>>>/*
> >>>>>>>>>>>>>>>>if(logLevelString == null && init) {
> >>>>>>>>>>>>>>>> logLevelString =
> >>>>>>>>>>>>>>>>
> PropertiesHandler.getDefaultPropertyValueLogDebug(TopLinkProperties.LOGGING_LEVEL,
> >>>>>>>>>>>>>>>>session);
> >>>>>>>>>>>>>>>>}
> >>>>>>>>>>>>>>>>*/
> >>>>>>>>>>>>>>>>if (logLevelString != null) {
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>log.setLevel(AbstractSessionLog.translateStringToLoggingLevel(logLevelString));
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>}
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>I just talked to our product manager and we agree that
> >>>>>>>>>>>>>>>changing the JPA default to be the same as the default
> >>>>>>>>>>>>>>>logger. (INFO) Does that remove the need for the
> >>>>>>>>>>>>>>>useParentLevel() method?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>If we make this change, I think we should change
> the logging
> >>>>>>>>>>>>>>>in translateOldProperties and warnOldProperties to
> INFO.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>-Tom
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Regards
> >>>>>>>>>>>>>>>>- Wonseok
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>Let me know if you see any problems with the proposed
> >>>>>>>>>>>>>>>>changes. I
> >>>>>>>>>>>>>>>>tested with
> >>>>>>>>>>>>>>>>2 PUs being deployed, one with the explicit log
> level, and
> >>>>>>>>>>>>>>>>another
> >>>>>>>>>>>>>>>>without it.
> >>>>>>>>>>>>>>>>I also tested dynamic change of the log levels,
> and server
> >>>>>>>>>>>>>>>>restart. All seem
> >>>>>>>>>>>>>>>>to work correctly.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>thanks,
> >>>>>>>>>>>>>>>>-marina
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>-------- Original Message --------
> >>>>>>>>>>>>>>>>Subject: [Issue 1107] Logger defined by a
> property doesn't
> >>>>>>>>>>>>>>>>work
> >>>>>>>>>>>>>>>>Date: Thu, 12 Oct 2006 01:56:44 +0000
> >>>>>>>>>>>>>>>>From: mvatkina_at_dev.java.net
> <mailto:mvatkina_at_dev.java.net> <mailto:mvatkina_at_dev.java.net
> <mailto:mvatkina_at_dev.java.net>>
> >>>>>>>>>>>>>>>>To: mvatkina_at_dev.java.net
> <mailto:mvatkina_at_dev.java.net> <mailto:mvatkina_at_dev.java.net
> <mailto:mvatkina_at_dev.java.net>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> https://glassfish.dev.java.net/issues/show_bug.cgi?id=1107
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>User mvatkina changed the following:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> What |Old value
> |New value
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>================================================================================
>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Status|NEW
> |STARTED
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>--------------------------------------------------------------------------------
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>------- Additional comments from
> mvatkina_at_dev.java.net <mailto:mvatkina_at_dev.java.net>
> >>>>>>>>>>>>>>>><mailto: mvatkina_at_dev.java.net
> <mailto:mvatkina_at_dev.java.net>> Thu Oct 12 01:56:44 +0000
> >>>>>>>>>>>>>>>>2006 -------
> >>>>>>>>>>>>>>>>There are apparently several issues to address -
> >>>>>>>>>>>>>>>>1.Do not set log level explicitly if not specified
> in the
> >>>>>>>>>>>>>>>>properties - use the
> >>>>>>>>>>>>>>>>parent logger's level (set by the container) instead.
> >>>>>>>>>>>>>>>>2. The default logger namespace should be a child
> of TopLink
> >>>>>>>>>>>>>>>>namespace, e.g.
> >>>>>>>>>>>>>>>>" oracle.toplink.essentials.default", otherwise
> >>>>>>>>>>>>>>>>AbstractSessionLog
> >>>>>>>>>>>>>>>>will set the
> >>>>>>>>>>>>>>>>explicit level for all TopLink loggers (overriding
> the
> >>>>>>>>>>>>>>>>container
> >>>>>>>>>>>>>>>>settings) in
> >>>>>>>>>>>>>>>>the VM on the first PU with the specified log level.
> >>>>>>>>>>>>>>>>3. ServerSession name must be set prior to setting the
> >>>>>>>>>>>>>>>>logger for
> >>>>>>>>>>>>>>>>that session,
> >>>>>>>>>>>>>>>>otherwise the logger is registered as the default
> logger,
> >>>>>>>>>>>>>>>>and its
> >>>>>>>>>>>>>>>>level will
> >>>>>>>>>>>>>>>>apply to all PUs in this VM.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>A note: the problem that can't be solved so far is
> switching
> >>>>>>>>>>>>>>>>between explicitly
> >>>>>>>>>>>>>>>>specified log level for a PU and the defalt app
> server level
> >>>>>>>>>>>>>>>>for
> >>>>>>>>>>>>>>>>this namespace.
> >>>>>>>>>>>>>>>>As there is no way to unset log level after it's
> set, the only
> >>>>>>>>>>>>>>>>work around will
> >>>>>>>>>>>>>>>>be to change the property value or restart the server.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>
> >>>
> >>>
>
>
>