On Thu, Aug 27, 2015 at 5:44 PM, Xen <x...@dds.nl> wrote:

> setAllLevels doesn't convey what the method does at all, in the sense that
> it is going to 'traverse' a descendent hierarchy.
>
> If the nonqualification of setBranch was a problem, you could make it
> setBranchLevel, but whatever.
>
> or setBranchLevels.
>
> I guess branch is not a concept in Log4J.
>
> it is a static method right?.
>
> setDescendentTreeLevels ;-).
>
> Well, anyway.
>

Hm... but 'descendant' means the same as 'children' to me. I am not my own
descendant so that word is just as 'wrong' as children.

The word 'tree' does convey that we are not just looking at the immediate
decendants/children. I like 'tree' better than 'branch'.

setTreeLevel(String, Level)?

Nice discussion :-)

Gary


>
>
> Quoting Gary Gregory <garydgreg...@gmail.com>:
>
> Ah! Tricky stuff, that typing ;-)
>>
>> Committed.
>>
>> Gary
>>
>> On Thu, Aug 27, 2015 at 12:44 PM, Ralph Goers <ralph.go...@dslextreme.com
>> >
>> wrote:
>>
>> No. Autocorrect at work.  Should have been ?Sounds?
>>>
>>> Ralph
>>>
>>> On Aug 27, 2015, at 12:24 PM, Gary Gregory <garydgreg...@gmail.com>
>>> wrote:
>>>
>>> Pardon my lack of urban engagement ;-) but do you mean "Spuds" as in
>>> http://www.urbandictionary.com/define.php?term=Spud+Me
>>>
>>> Gary
>>>
>>> On Thu, Aug 27, 2015 at 12:07 PM, Ralph Goers <
>>> ralph.go...@dslextreme.com>
>>> wrote:
>>>
>>> Spuds ok to me
>>>>
>>>> Sent from my iPad
>>>>
>>>> On Aug 27, 2015, at 11:49 AM, Gary Gregory <garydgreg...@gmail.com>
>>>> wrote:
>>>>
>>>> setAllChildLevels is nice and explicit, but like setChildren it does not
>>>> convey the fact that the API sets the _given_ level _and_ its children.
>>>>
>>>> Maybe setAllLevels(String, Level) ?
>>>>
>>>> Gary
>>>>
>>>> On Thu, Aug 27, 2015 at 11:24 AM, Ralph Goers <
>>>> ralph.go...@dslextreme.com
>>>> > wrote:
>>>>
>>>> setBranch doesn?t resonate with me.  Partly the problem is that you
>>>>> don?t identify what is being set in the name.  I would actually prefer
>>>>>
>>>>> something like setAllChildLevels.
>>>>>
>>>>> Ralph
>>>>>
>>>>> On Aug 27, 2015, at 11:17 AM, Gary Gregory <garydgreg...@gmail.com>
>>>>> wrote:
>>>>>
>>>>> Ohhh, I like setBranch instead of setChildren. I'll let it simmer for a
>>>>> little...
>>>>>
>>>>> Thoughts from others?
>>>>>
>>>>> Gary
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Aug 27, 2015 at 7:15 AM, Xen <x...@dds.nl> wrote:
>>>>>
>>>>> Maybe you can call it setBranch() instead, since you are really trying
>>>>>> to set an entire branch of a tree, and you are no so much  worried
>>>>>> about the
>>>>>> fact that they are children. In other words, the parent is included
>>>>>> too.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, 26 Aug 2015, Gary Gregory wrote:
>>>>>>
>>>>>> On Sat, Aug 22, 2015 at 1:58 PM, Gary Gregory <garydgreg...@gmail.com
>>>>>> >
>>>>>>
>>>>>>> wrote:
>>>>>>>
>>>>>>> In this case the caller is setChildren, so it would know. I've not
>>>>>>>
>>>>>>>> experimented with coding this yet though.
>>>>>>>>
>>>>>>>>
>>>>>>>> A reminder that this new code has been in for a couple of days and
>>>>>>> that I
>>>>>>> am not in love with the API name setChildren, so I am open to
>>>>>>> suggestions.
>>>>>>>
>>>>>>> Gary
>>>>>>>
>>>>>>>
>>>>>>> Gary
>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Aug 22, 2015 at 11:10 AM, Ralph Goers <
>>>>>>>> ralph.go...@dslextreme.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Yes. Except that puts the burden on the caller to keep track of
>>>>>>>>
>>>>>>>>> everything they modified.
>>>>>>>>>
>>>>>>>>> Ralph
>>>>>>>>>
>>>>>>>>> On Aug 22, 2015, at 9:33 AM, Gary Gregory <garydgreg...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Furthermore could loggerContext.updateLoggers() be optimized by
>>>>>>>>> passing
>>>>>>>>> it the the list of LoggerConfigs we modifed?
>>>>>>>>>
>>>>>>>>> Gary
>>>>>>>>>
>>>>>>>>> On Sat, Aug 22, 2015 at 9:04 AM, Gary Gregory <
>>>>>>>>> garydgreg...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Ah, like this then?
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>     /**
>>>>>>>>>>      * Sets the levels of <code>parentLogger</code> and all
>>>>>>>>>> 'child'
>>>>>>>>>> loggers to the given <code>level</level>.
>>>>>>>>>>      * @param parentLogger the parent logger
>>>>>>>>>>      * @param level the new level
>>>>>>>>>>      */
>>>>>>>>>>     public static void setChildren(final String parentLogger,
>>>>>>>>>> final
>>>>>>>>>> Level level) {
>>>>>>>>>>         // get logger config
>>>>>>>>>>         // if exact match? Use it, if not, create it.
>>>>>>>>>>         // set level
>>>>>>>>>>         // update loggers
>>>>>>>>>>         final LoggerContext loggerContext =
>>>>>>>>>> LoggerContext.getContext(false);
>>>>>>>>>>         final Configuration config =
>>>>>>>>>> loggerContext.getConfiguration();
>>>>>>>>>>         boolean set = setLevel(parentLogger, level, config);
>>>>>>>>>>         final Map<String, LoggerConfig> loggerConfigMap =
>>>>>>>>>> config.getLoggers();
>>>>>>>>>>         for (Map.Entry<String, LoggerConfig> entry :
>>>>>>>>>> loggerConfigMap.entrySet()) {
>>>>>>>>>>             if (entry.getKey().startsWith(parentLogger)) {
>>>>>>>>>>                 set |= setLevel(entry.getValue(), level);
>>>>>>>>>>             }
>>>>>>>>>>         }
>>>>>>>>>>         if (set) {
>>>>>>>>>>             loggerContext.updateLoggers();
>>>>>>>>>>         }
>>>>>>>>>>     }
>>>>>>>>>>
>>>>>>>>>> Gary
>>>>>>>>>>
>>>>>>>>>> On Sat, Aug 22, 2015 at 8:19 AM, Gary Gregory <
>>>>>>>>>> garydgreg...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Let's say I have
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Logger com = ERROR (or even just the root Logger at ERROR).
>>>>>>>>>>>
>>>>>>>>>>> and I want Logger com.domain.foo and all its children set to
>>>>>>>>>>> DEBUG
>>>>>>>>>>>
>>>>>>>>>>> If I get the LoggerConfig that matches the parent logger and call
>>>>>>>>>>> setLevel on that, I will end up with Logger com at DEBUG, won't
>>>>>>>>>>> I?
>>>>>>>>>>>
>>>>>>>>>>> Gary
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Aug 21, 2015 at 9:53 PM, Ralph Goers <
>>>>>>>>>>> ralph.go...@dslextreme.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>> That is definitely not how to implement it.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> You should get the LoggerConfig that matches your parent logger
>>>>>>>>>>>> and
>>>>>>>>>>>> call setLevel on that. Then loop through all the loggerConfigs
>>>>>>>>>>>> that start
>>>>>>>>>>>> with the located LoggerConfigs name and then call setLevel on
>>>>>>>>>>>> them.  You
>>>>>>>>>>>> typically aren?t going to have many LoggerConfigs while you
>>>>>>>>>>>> could
>>>>>>>>>>>>
>>>>>>>>>>>> have
>>>>>>>>>>>> thousands of Loggers, which all resolve to the same
>>>>>>>>>>>> LoggerConfig.
>>>>>>>>>>>>
>>>>>>>>>>>> Ralph
>>>>>>>>>>>>
>>>>>>>>>>>> On Aug 21, 2015, at 9:30 PM, Gary Gregory <
>>>>>>>>>>>> garydgreg...@gmail.com
>>>>>>>>>>>> >
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Aug 19, 2015 at 7:59 PM, Gary Gregory <
>>>>>>>>>>>> garydgreg...@gmail.com>
>>>>>>>>>>>>  wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> On Sat, Aug 15, 2015 at 3:56 PM, Gary Gregory <
>>>>>>>>>>>>
>>>>>>>>>>>>> garydgreg...@gmail.com
>>>>>>>>>>>>>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sat, Aug 15, 2015 at 3:07 PM, Ralph Goers <
>>>>>>>>>>>>>
>>>>>>>>>>>>>> ralph.go...@dslextreme.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Why do you want to set the level on the LoggerConfig and all
>>>>>>>>>>>>>> its
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> descendants?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Because I clearly did not educate myself fully in this topic.
>>>>>>>>>>>>>> ;-)
>>>>>>>>>>>>>> Hence I am looking for a shortcut by asking on the ML :-)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Setting the level just on the LoggerConfig will achieve the
>>>>>>>>>>>>>> same
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> thing, so long as none of its descendants has a LoggerConfig
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> That's cool, but... How can I know if any descendant has a
>>>>>>>>>>>>>> LoggerConfig? How can do this generically?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Here is my proposal (including a test):
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://issues.apache.org/jira/secure/attachment/12751400/log4j.diff
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am not crazy about the API name: setChildren(String
>>>>>>>>>>>>> loggerName,
>>>>>>>>>>>>> Level level).
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thoughts?
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Anyone? Bueller? :-)
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Gary
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Gary
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Sent from my iPad
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Aug 15, 2015, at 8:25 AM, Gary Gregory <
>>>>>>>>>>>>>>> garydgreg...@gmail.com>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Let's say I have a logger tree like:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> R
>>>>>>>>>>>>>>> R.P
>>>>>>>>>>>>>>> R.P.C1
>>>>>>>>>>>>>>> R.P.C1.L1
>>>>>>>>>>>>>>> R.P.C2.L2
>>>>>>>>>>>>>>> R.P.C2
>>>>>>>>>>>>>>> R.P.C2.L1
>>>>>>>>>>>>>>> R.P.C2.L2
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> and I want to set R.P.C2 and all it's descendants to a given
>>>>>>>>>>>>>>> level.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> In Log4j 1.2, I do:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>     public static void setChildren(final Logger parentLogger,
>>>>>>>>>>>>>>> final Level newLevel) {
>>>>>>>>>>>>>>>         final Enumeration<Logger> enumeration =
>>>>>>>>>>>>>>> LogManager.getCurrentLoggers();
>>>>>>>>>>>>>>>         while (enumeration.hasMoreElements()) {
>>>>>>>>>>>>>>>             final Logger logger = enumeration.nextElement();
>>>>>>>>>>>>>>>             if (LoggerUtils.isChild(parentLogger, logger)) {
>>>>>>>>>>>>>>>                 logger.setLevel(newLevel);
>>>>>>>>>>>>>>>             }
>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>     private static boolean isChild(final Logger
>>>>>>>>>>>>>>> parentCandidate,
>>>>>>>>>>>>>>> final Logger childCandidate) {
>>>>>>>>>>>>>>>         for (Category c = childCandidate; c != null; c =
>>>>>>>>>>>>>>> c.getParent()) {
>>>>>>>>>>>>>>>             if (c.equals(parentCandidate)) {
>>>>>>>>>>>>>>>                 return true;
>>>>>>>>>>>>>>>             }
>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>         return false;
>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I suppose I could determine parent/child with a startWith on
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> logger name too.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I there a better way to do this with the Core in v2 aside
>>>>>>>>>>>>>>> from
>>>>>>>>>>>>>>> iterating over all loggers in a context and doing a kind of
>>>>>>>>>>>>>>> isChild()? Can
>>>>>>>>>>>>>>> additivity be used for this?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'd like to add such a utility method to Configurator.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Gary
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>>>>>>>> <ggreg...@apache.org>
>>>>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>>>>>> JUnit in Action, Second Edition <
>>>>>>>>>>>>>>> http://www.manning.com/tahchiev/>
>>>>>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>>>>>>> <ggreg...@apache.org>
>>>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>>>>> JUnit in Action, Second Edition <
>>>>>>>>>>>>>> http://www.manning.com/tahchiev/>
>>>>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>>>>>> <ggreg...@apache.org>
>>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>>>> JUnit in Action, Second Edition <
>>>>>>>>>>>>> http://www.manning.com/tahchiev/>
>>>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>>>>> <ggreg...@apache.org>
>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>>> JUnit in Action, Second Edition <
>>>>>>>>>>>> http://www.manning.com/tahchiev/
>>>>>>>>>>>> >
>>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>> JUnit in Action, Second Edition <
>>>>>>>>>>> http://www.manning.com/tahchiev/>
>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/
>>>>>>>>>> >
>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>> Home: http://garygregory.com/
>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>> Home: http://garygregory.com/
>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>>>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>> Java Persistence with Hibernate, Second Edition
>>>>> <http://www.manning.com/bauer3/>
>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>> Blog: http://garygregory.wordpress.com
>>>>> Home: http://garygregory.com/
>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>> Java Persistence with Hibernate, Second Edition
>>>> <http://www.manning.com/bauer3/>
>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>> Blog: http://garygregory.wordpress.com
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>>>
>>>>
>>>>
>>>
>>> --
>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>> Java Persistence with Hibernate, Second Edition
>>> <http://www.manning.com/bauer3/>
>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>> Spring Batch in Action <http://www.manning.com/templier/>
>>> Blog: http://garygregory.wordpress.com
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>>>
>>>
>>>
>>>
>>
>> --
>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>> Java Persistence with Hibernate, Second Edition
>> <http://www.manning.com/bauer3/>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>> Spring Batch in Action <http://www.manning.com/templier/>
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>>
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>
>


-- 
E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to