logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Sicker <boa...@gmail.com>
Subject Re: svn commit: r1611003 - in /logging/log4j/log4j2/trunk: log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java src/changes/changes.xml
Date Wed, 16 Jul 2014 14:25:04 GMT
I think it's rather technical why we get one exception or the other. The
VerifyError would happen during linkage, while the no class def would
happen during loading. The VerifyError was in a constructor. The other one
might be in a different location. You'd probably get an
ExceptionInInitializationError if it happened inside the static block for
instance.


On 16 July 2014 09:18, Remko Popma <remko.popma@gmail.com> wrote:

> Hm... Good point. I will remove the Environment class and put a try/catch
> Throwable around the Server.reregisterMBeansAfterReconfigure invocation.
>
>
> On Wed, Jul 16, 2014 at 11:02 PM, Gary Gregory <garydgregory@gmail.com>
> wrote:
>
>> Yeah, big mystery. I'm not sure we should have code like "if !
>> isAndroid()..." It might be better to // comment and catch
>> errors/exceptions because who know how Android will change.
>>
>> Gary
>>
>>
>> On Wed, Jul 16, 2014 at 9:58 AM, Remko Popma <remko.popma@gmail.com>
>> wrote:
>>
>>> But beats me why the JNDI stuff would throw a VerifyError and the JMX
>>> stuff only a NoClassDefFoundError...
>>>
>>>
>>> On Wed, Jul 16, 2014 at 10:49 PM, Remko Popma <remko.popma@gmail.com>
>>> wrote:
>>>
>>>> I did think about that but if you look at the stack trace it is able to
>>>> load the Server class, so I think we're okay:
>>>>
>>>>     java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory
>>>>             at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:118)
>>>>             at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:369)
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Jul 16, 2014 at 10:41 PM, Gary Gregory <garydgregory@gmail.com>
>>>> wrote:
>>>>
>>>>> I do not think this is going to work. See my fix for the JNDI lookup
>>>>> loading.
>>>>>
>>>>> Because you have a hard reference in the LoggerContext class to our
>>>>> JMX Server class, you still have a dependency on JMX. We need to refer
to
>>>>> our JMX Server class dynamically, using reflection for example.
>>>>>
>>>>> Gary
>>>>>
>>>>>
>>>>> ---------- Forwarded message ----------
>>>>> From: <rpopma@apache.org>
>>>>> Date: Wed, Jul 16, 2014 at 9:31 AM
>>>>> Subject: svn commit: r1611003 - in /logging/log4j/log4j2/trunk:
>>>>> log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
>>>>> log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java
>>>>> src/changes/changes.xml
>>>>> To: commits@logging.apache.org
>>>>>
>>>>>
>>>>> Author: rpopma
>>>>> Date: Wed Jul 16 13:31:07 2014
>>>>> New Revision: 1611003
>>>>>
>>>>> URL: http://svn.apache.org/r1611003
>>>>> Log:
>>>>> LOG4J2-716: automatically disable log4j JMX when detecting we are
>>>>> running on Android
>>>>>
>>>>> Added:
>>>>>
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java
>>>>>   (with props)
>>>>> Modified:
>>>>>
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
>>>>>     logging/log4j/log4j2/trunk/src/changes/changes.xml
>>>>>
>>>>> Modified:
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java?rev=1611003&r1=1611002&r2=1611003&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
>>>>> (original)
>>>>> +++
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
>>>>> Wed Jul 16 13:31:07 2014
>>>>> @@ -41,6 +41,7 @@ import org.apache.logging.log4j.core.con
>>>>>  import org.apache.logging.log4j.core.config.Reconfigurable;
>>>>>  import org.apache.logging.log4j.core.jmx.Server;
>>>>>  import org.apache.logging.log4j.core.util.Assert;
>>>>> +import org.apache.logging.log4j.core.util.Environment;
>>>>>  import org.apache.logging.log4j.core.util.NetUtils;
>>>>>  import org.apache.logging.log4j.message.MessageFactory;
>>>>>  import org.apache.logging.log4j.spi.AbstractLogger;
>>>>> @@ -365,10 +366,12 @@ public class LoggerContext extends Abstr
>>>>>
>>>>>          firePropertyChangeEvent(new PropertyChangeEvent(this,
>>>>> PROPERTY_CONFIG, prev, config));
>>>>>
>>>>> -        try {
>>>>> -            Server.reregisterMBeansAfterReconfigure();
>>>>> -        } catch (final Exception ex) {
>>>>> -            LOGGER.error("Could not reconfigure JMX", ex);
>>>>> +        if (!Environment.isAndroid()) { // LOG4J2-716: Android has no
>>>>> java.lang.management
>>>>> +            try {
>>>>> +                Server.reregisterMBeansAfterReconfigure();
>>>>> +            } catch (final Exception ex) {
>>>>> +                LOGGER.error("Could not reconfigure JMX", ex);
>>>>> +            }
>>>>>          }
>>>>>          return prev;
>>>>>      }
>>>>>
>>>>> Added:
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java?rev=1611003&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java
>>>>> (added)
>>>>> +++
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java
>>>>> Wed Jul 16 13:31:07 2014
>>>>> @@ -0,0 +1,34 @@
>>>>> +/*
>>>>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>>>>> + * contributor license agreements. See the NOTICE file distributed
>>>>> with
>>>>> + * this work for additional information regarding copyright ownership.
>>>>> + * The ASF licenses this file to You under the Apache license,
>>>>> Version 2.0
>>>>> + * (the "License"); you may not use this file except in compliance
>>>>> with
>>>>> + * the License. You may obtain a copy of the License at
>>>>> + *
>>>>> + *      http://www.apache.org/licenses/LICENSE-2.0
>>>>> + *
>>>>> + * Unless required by applicable law or agreed to in writing, software
>>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>>> implied.
>>>>> + * See the license for the specific language governing permissions and
>>>>> + * limitations under the license.
>>>>> + */
>>>>> +
>>>>> +package org.apache.logging.log4j.core.util;
>>>>> +
>>>>> +/**
>>>>> + * Runtime environment-related utility methods.
>>>>> + */
>>>>> +public final class Environment {
>>>>> +    private Environment() {
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns {@code true} if we are running on Android, {@code
>>>>> false} otherwise
>>>>> +     * @return {@code true} if system property
>>>>> "java.specification.vendor" contains "android"
>>>>> +     */
>>>>> +    public static boolean isAndroid() {
>>>>> +        return System.getProperty("java.specification.vendor",
>>>>> "x").toLowerCase().contains("android");
>>>>> +    }
>>>>> +}
>>>>>
>>>>> Propchange:
>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>     svn:eol-style = native
>>>>>
>>>>> Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1611003&r1=1611002&r2=1611003&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
>>>>> +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Jul 16
>>>>> 13:31:07 2014
>>>>> @@ -22,6 +22,9 @@
>>>>>    </properties>
>>>>>    <body>
>>>>>      <release version="?" date="2014-mm-dd" description="?">
>>>>> +      <action issue="LOG4J2-716" dev="popmarem" type="fix">
>>>>> +        Automatically disable log4j JMX when detecting we are running
>>>>> on Android.
>>>>> +      </action>
>>>>>        <action issue="LOG4J2-657" dev="popmarem" type="fix"
>>>>> due-to="Stefan Wehner">
>>>>>          Fixed AbstractDatabaseManager to close connection on
>>>>> writeInternal error.
>>>>>        </action>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> E-Mail: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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
>>
>
>


-- 
Matt Sicker <boards@gmail.com>

Mime
View raw message