http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution


On Jul 16, 2014, at 10:03 AM, Remko Popma <[email protected]> wrote:

> Where do we document that we put the hostName in the context properties? That 
> is probably the place to mention that for Android the value will be "unknown".
> 
> The JMX stuff will not work because Android doesn't support it. This is 
> expected, so there is not much to explain here.
> 
> 
> On Wed, Jul 16, 2014 at 11:26 PM, Gary Gregory <[email protected]> wrote:
> We need an Android section on the site explain what we know will not work and 
> what we disable...
> 
> Gary
> 
> 
> On Wed, Jul 16, 2014 at 10:25 AM, Matt Sicker <[email protected]> wrote:
> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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: <[email protected]>
> 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: [email protected]
> 
> 
> 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: [email protected] | [email protected] 
> Java Persistence with Hibernate, Second Edition
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
> 
> 
> 
> 
> 
> -- 
> E-Mail: [email protected] | [email protected] 
> Java Persistence with Hibernate, Second Edition
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
> 
> 
> 
> 
> -- 
> Matt Sicker <[email protected]>
> 
> 
> 
> -- 
> E-Mail: [email protected] | [email protected] 
> Java Persistence with Hibernate, Second Edition
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
> 

Reply via email to