Android isn’t Java. Ralph
On Aug 20, 2014, at 9:30 PM, Matt Sicker <[email protected]> wrote: > Android doesn't have java.lang.management? I thought everything in java.* was > considered core. At least it was until the compact profiles were introduced > in Java 1.8. > > > On 20 August 2014 23:28, Ralph Goers <[email protected]> wrote: > I’d prefer the better name. The documentation should make it clear that it > isn’t available in Android. Assuming that because it has JMX in the name > everyone will understand that is probably not the best way to do it. > Ralph > > > > On Aug 20, 2014, at 4:03 PM, Gary Gregory <[email protected]> wrote: > >> The only reason I had "jmx" in there is as a heads up to Android developers >> since JMX is not available on Android. >> >> Our options: >> >> - Take it out >> - Give it a better name: “jvmrun” or “jvmrunargs” >> >> Thoughts? >> >> Gary >> >> >> >> On Wed, Aug 20, 2014 at 6:59 PM, Ralph Goers <[email protected]> >> wrote: >> Why does the JMX part matter? All the user probably cares about is that >> they can get JVM input arguments”. >> >> It specifically doesn’t get the application parameters and the -D arguments >> can be obtained as system properties, so I’m not sure how much other useful >> stuff will be there. >> >> I would go with “jvmrun” or “jvmrunargs” as the name. >> >> Ralph >> >> On Aug 20, 2014, at 2:32 PM, Gary Gregory <[email protected]> wrote: >> >> > I was looking for a name that says "I lookup JVM input arguments through >> > JMX". I'd love to have a better name! >> > >> > Gary >> > >> > >> > -------- Original message -------- >> > From: Ralph Goers >> > Date:08/20/2014 16:04 (GMT-05:00) >> > To: [email protected] >> > Subject: Re: svn commit: r1619026 - in /logging/log4j/log4j2/trunk: >> > log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ >> > log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ >> > src/changes/ src/site/xdoc/manual/ >> > >> > Why is the lookup that returns JVM arguments named jmx-input? That just >> > seems strange. >> > >> > Ralph >> > >> > On Aug 19, 2014, at 8:19 PM, [email protected] wrote: >> > >> > > Author: ggregory >> > > Date: Wed Aug 20 03:19:09 2014 >> > > New Revision: 1619026 >> > > >> > > URL: http://svn.apache.org/r1619026 >> > > Log: >> > > [LOG4J2-771] Add lookup for application main arguments. >> > > [LOG4J2-787] Add lookup for JVM arguments. >> > > >> > > Added: >> > > >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java >> > > (with props) >> > > >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java >> > > (with props) >> > > >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java >> > > (with props) >> > > Modified: >> > > >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java >> > > >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java >> > > >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java >> > > logging/log4j/log4j2/trunk/src/changes/changes.xml >> > > logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm >> > > logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml >> > > >> > > Modified: >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java?rev=1619026&r1=1619025&r2=1619026&view=diff >> > > ============================================================================== >> > > --- >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java >> > > (original) >> > > +++ >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -27,7 +27,7 @@ import org.apache.logging.log4j.core.uti >> > > import org.apache.logging.log4j.status.StatusLogger; >> > > >> > > /** >> > > - * Proxies all the other StrLookups. >> > > + * Proxies all the other {@link StrLookup}s. >> > > */ >> > > public class Interpolator implements StrLookup { >> > > >> > > @@ -72,6 +72,8 @@ public class Interpolator implements Str >> > > // TODO: this ought to use the PluginManager >> > > lookups.put("sys", new SystemPropertiesLookup()); >> > > lookups.put("env", new EnvironmentLookup()); >> > > + lookups.put("main", MapLookup.MAIN_SINGLETON); >> > > + // JNDI >> > > try { >> > > // [LOG4J2-703] We might be on Android >> > > lookups.put("jndi", >> > > @@ -82,6 +84,17 @@ public class Interpolator implements Str >> > > "JNDI lookup class is not available because this JRE >> > > does not support JNDI. JNDI string lookups will not be available, >> > > continuing configuration.", >> > > e); >> > > } >> > > + // JMX input args >> > > + try { >> > > + // We might be on Android >> > > + lookups.put("jmx-input", >> > > + >> > > Loader.newCheckedInstanceOf("org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup", >> > > StrLookup.class)); >> > > + } catch (Throwable e) { >> > > + // java.lang.VerifyError: >> > > org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup >> > > + LOGGER.warn( >> > > + "JMX runtime input lookup class is not available >> > > because this JRE does not support JMX. JMX lookups will not be >> > > available, continuing configuration.", >> > > + e); >> > > + } >> > > lookups.put("date", new DateLookup()); >> > > lookups.put("ctx", new ContextMapLookup()); >> > > if (Loader.isClassAvailable("javax.servlet.ServletContext")) { >> > > >> > > Added: >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java?rev=1619026&view=auto >> > > ============================================================================== >> > > --- >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java >> > > (added) >> > > +++ >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -0,0 +1,29 @@ >> > > +package org.apache.logging.log4j.core.lookup; >> > > + >> > > +import java.lang.management.ManagementFactory; >> > > +import java.util.List; >> > > +import java.util.Map; >> > > + >> > > +import org.apache.logging.log4j.core.config.plugins.Plugin; >> > > + >> > > +/** >> > > + * Maps JVM input arguments (but not main arguments) using JMX to >> > > acquire JVM arguments. >> > > + * >> > > + * @see java.lang.management.RuntimeMXBean#getInputArguments() >> > > + * @since 2.1 >> > > + */ >> > > +@Plugin(name = "jmx-input", category = "Lookup") >> > > +public class JmxRuntimeInputArgumentsLookup extends MapLookup { >> > > + >> > > + static { >> > > + List<String> argsList = >> > > ManagementFactory.getRuntimeMXBean().getInputArguments(); >> > > + JMX_SINGLETON = new >> > > JmxRuntimeInputArgumentsLookup(MapLookup.toMap(argsList)); >> > > + } >> > > + >> > > + public static final JmxRuntimeInputArgumentsLookup JMX_SINGLETON; >> > > + >> > > + public JmxRuntimeInputArgumentsLookup(Map<String, String> map) { >> > > + super(map); >> > > + } >> > > + >> > > +} >> > > >> > > Propchange: >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java >> > > ------------------------------------------------------------------------------ >> > > svn:eol-style = native >> > > >> > > Propchange: >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java >> > > ------------------------------------------------------------------------------ >> > > svn:keywords = Id >> > > >> > > Modified: >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java?rev=1619026&r1=1619025&r2=1619026&view=diff >> > > ============================================================================== >> > > --- >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java >> > > (original) >> > > +++ >> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -16,6 +16,8 @@ >> > > */ >> > > package org.apache.logging.log4j.core.lookup; >> > > >> > > +import java.util.HashMap; >> > > +import java.util.List; >> > > import java.util.Map; >> > > >> > > import org.apache.logging.log4j.core.LogEvent; >> > > @@ -23,25 +25,82 @@ import org.apache.logging.log4j.core.con >> > > import org.apache.logging.log4j.message.MapMessage; >> > > >> > > /** >> > > - * The basis for a lookup based on a Map. >> > > + * A map-based lookup. >> > > */ >> > > @Plugin(name = "map", category = "Lookup") >> > > public class MapLookup implements StrLookup { >> > > - >> > > + >> > > /** >> > > - * Map keys are variable names and value. >> > > + * A singleton used by a main method to save its arguments. >> > > */ >> > > - private final Map<String, String> map; >> > > + static final MapLookup MAIN_SINGLETON = new MapLookup(newMap(0)); >> > > + >> > > + static Map<String, String> initMap(final String[] srcArgs, final >> > > Map<String, String> destMap) { >> > > + for (int i = 0; i < srcArgs.length; i++) { >> > > + final int next = i + 1; >> > > + final String value = srcArgs[i]; >> > > + destMap.put(Integer.toString(i), value); >> > > + destMap.put(value, next < srcArgs.length ? srcArgs[next] : >> > > null); >> > > + } >> > > + return destMap; >> > > + } >> > > + >> > > + private static HashMap<String, String> newMap(final int >> > > initialCapacity) { >> > > + return new HashMap<String, String>(initialCapacity); >> > > + } >> > > >> > > /** >> > > - * Creates a new instance backed by a Map. Used by the default >> > > lookup. >> > > - * >> > > - * @param map the map of keys to values, may be null >> > > + * An application's {@code public static main(String[])} method >> > > calls this method to make its main arguments >> > > + * available for lookup with the prefix {@code main}. >> > > + * <p> >> > > + * The map provides two kinds of access: First by index, starting >> > > at {@code "0"}, {@code "1"} and so on. For >> > > + * example, the command line {@code --file path/file.txt -x 2} can >> > > be accessed from a configuration file with: >> > > + * </p> >> > > + * <ul> >> > > + * <li>{@code "main:0"} = {@code "--file"}</li> >> > > + * <li>{@code "main:1"} = {@code "path/file.txt"}</li> >> > > + * <li>{@code "main:2"} = {@code "-x"}</li> >> > > + * <li>{@code "main:3"} = {@code "2"}</li> >> > > + * </ul> >> > > + * <p> >> > > + * Second using the argument at position n as the key to access the >> > > value at n+1. >> > > + * </p> >> > > + * <ul> >> > > + * <li>{@code "main:--file"} = {@code "path/file.txt"}</li> >> > > + * <li>{@code "main:-x"} = {@code "2"}</li> >> > > + * </ul> >> > > + * >> > > + * @param args >> > > + * An application's {@code public static main(String[])} >> > > arguments. >> > > + * @since 2.1 >> > > */ >> > > - public MapLookup(final Map<String, String> map) { >> > > - this.map = map; >> > > + public static void setMainArguments(final String[] args) { >> > > + if (args == null) { >> > > + return; >> > > + } >> > > + initMap(args, MAIN_SINGLETON.map); >> > > + } >> > > + >> > > + static Map<String, String> toMap(final List<String> args) { >> > > + if (args == null) { >> > > + return null; >> > > + } >> > > + final int size = args.size(); >> > > + return initMap(args.toArray(new String[size]), newMap(size)); >> > > } >> > > >> > > + static Map<String, String> toMap(final String[] args) { >> > > + if (args == null) { >> > > + return null; >> > > + } >> > > + return initMap(args, newMap(args.length)); >> > > + } >> > > + >> > > + /** >> > > + * Map keys are variable names and value. >> > > + */ >> > > + private final Map<String, String> map; >> > > + >> > > /** >> > > * Constructor when used directly as a plugin. >> > > */ >> > > @@ -50,21 +109,13 @@ public class MapLookup implements StrLoo >> > > } >> > > >> > > /** >> > > - * Looks up a String key to a String value using the map. >> > > - * <p> >> > > - * If the map is null, then null is returned. >> > > - * The map result object is converted to a string using toString(). >> > > - * </p> >> > > + * Creates a new instance backed by a Map. Used by the default >> > > lookup. >> > > * >> > > - * @param key the key to be looked up, may be null >> > > - * @return the matching value, null if no match >> > > + * @param map >> > > + * the map of keys to values, may be null >> > > */ >> > > - @Override >> > > - public String lookup(final String key) { >> > > - if (map == null) { >> > > - return null; >> > > - } >> > > - return map.get(key); >> > > + public MapLookup(final Map<String, String> map) { >> > > + this.map = map; >> > > } >> > > >> > > @Override >> > > @@ -83,4 +134,23 @@ public class MapLookup implements StrLoo >> > > } >> > > return null; >> > > } >> > > + >> > > + /** >> > > + * Looks up a String key to a String value using the map. >> > > + * <p> >> > > + * If the map is null, then null is returned. The map result object >> > > is converted to a string using toString(). >> > > + * </p> >> > > + * >> > > + * @param key >> > > + * the key to be looked up, may be null >> > > + * @return the matching value, null if no match >> > > + */ >> > > + @Override >> > > + public String lookup(final String key) { >> > > + if (map == null) { >> > > + return null; >> > > + } >> > > + return map.get(key); >> > > + } >> > > + >> > > } >> > > >> > > Added: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java?rev=1619026&view=auto >> > > ============================================================================== >> > > --- >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java >> > > (added) >> > > +++ >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -0,0 +1,57 @@ >> > > +/* >> > > + * 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.lookup; >> > > + >> > > +import static org.junit.Assert.assertEquals; >> > > + >> > > +import org.junit.Test; >> > > + >> > > +/** >> > > + * Tests {@link JmxRuntimeInputArgumentsLookup} from the command line, >> > > not a JUnit test. >> > > + * >> > > + * From an IDE or CLI: --file foo.txt >> > > + * >> > > + * @since 2.1 >> > > + */ >> > > +public class MainInputArgumentsJmxLookupTest { >> > > + >> > > + public static void main(String[] args) { >> > > + new MainInputArgumentsJmxLookupTest().callFromMain(); >> > > + } >> > > + >> > > + @Test >> > > + public void testMap() { >> > > + JmxRuntimeInputArgumentsLookup lookup = >> > > JmxRuntimeInputArgumentsLookup.JMX_SINGLETON; >> > > + assertEquals(null, lookup.lookup(null)); >> > > + assertEquals(null, lookup.lookup("X")); >> > > + assertEquals(null, lookup.lookup("foo.txt")); >> > > + } >> > > + >> > > + public void callFromMain() { >> > > + JmxRuntimeInputArgumentsLookup lookup = >> > > JmxRuntimeInputArgumentsLookup.JMX_SINGLETON; >> > > + assertEquals(null, lookup.lookup(null)); >> > > + assertEquals(null, lookup.lookup("X")); >> > > + // Eclipse adds -Dfile.encoding=Cp1252 >> > > + // assertEquals("--file", lookup.lookup("0")); >> > > + // assertEquals("foo.txt", lookup.lookup("1")); >> > > + // >> > > + // JMX does not include the main arguments. >> > > + // assertEquals("foo.txt", lookup.lookup("--file")); >> > > + // assertEquals(null, lookup.lookup("foo.txt")); >> > > + } >> > > + >> > > +} >> > > >> > > Propchange: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java >> > > ------------------------------------------------------------------------------ >> > > svn:eol-style = native >> > > >> > > Propchange: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java >> > > ------------------------------------------------------------------------------ >> > > svn:keywords = Id >> > > >> > > Added: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java?rev=1619026&view=auto >> > > ============================================================================== >> > > --- >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java >> > > (added) >> > > +++ >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -0,0 +1,41 @@ >> > > +package org.apache.logging.log4j.core.lookup; >> > > + >> > > +import java.util.Map; >> > > + >> > > +/** >> > > + * Work in progress, saved for future experimentation. >> > > + * >> > > + * TODO The goal is to use the Sun debugger API to find the main arg >> > > values on the stack. >> > > + */ >> > > +public class MainInputArgumentsMapLookup extends MapLookup { >> > > + >> > > + public static final MainInputArgumentsMapLookup SINGLETON_STACK; >> > > + >> > > + static { >> > > + Map<Thread, StackTraceElement[]> allStackTraces = >> > > Thread.getAllStackTraces(); >> > > + String[] args = null; >> > > + for (Map.Entry<Thread, StackTraceElement[]> entry : >> > > allStackTraces.entrySet()) { >> > > + StackTraceElement[] stackTraceElements = entry.getValue(); >> > > + Thread thread = entry.getKey(); >> > > + // Can't use the thread name to look for "main" since >> > > anyone can set it. >> > > + // Can't use thread ID since it can be any positive value, >> > > and is likely vender dependent. Oracle seems to >> > > + // use 1. >> > > + // We are left to look for "main" at the top of the stack >> > > + if (stackTraceElements != null) { >> > > + final int frame0 = stackTraceElements.length - 1; >> > > + if >> > > ("main".equals(stackTraceElements[frame0].getMethodName())) { >> > > + // We could further validate the main is a public >> > > static void method that takes a String[], if not, >> > > + // look at the other threads. >> > > + // >> > > + // How do we get the main args from the stack with >> > > the debug API? >> > > + // Must we be started in debug mode? Seems like it. >> > > + } >> > > + } >> > > + } >> > > + SINGLETON_STACK = new >> > > MainInputArgumentsMapLookup(MapLookup.toMap(args)); >> > > + } >> > > + >> > > + public MainInputArgumentsMapLookup(Map<String, String> map) { >> > > + super(map); >> > > + } >> > > +} >> > > >> > > Propchange: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java >> > > ------------------------------------------------------------------------------ >> > > svn:eol-style = native >> > > >> > > Propchange: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java >> > > ------------------------------------------------------------------------------ >> > > svn:keywords = Id >> > > >> > > Modified: >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java?rev=1619026&r1=1619025&r2=1619026&view=diff >> > > ============================================================================== >> > > --- >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java >> > > (original) >> > > +++ >> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -49,4 +49,19 @@ public class MapLookupTest { >> > > assertEquals(null, lookup.lookup(null)); >> > > assertEquals(null, lookup.lookup("X")); >> > > } >> > > + >> > > + @Test >> > > + public void testMainMap() { >> > > + MapLookup.setMainArguments(new String[] { >> > > + "--file", >> > > + "foo.txt" }); >> > > + MapLookup lookup = MapLookup.MAIN_SINGLETON; >> > > + assertEquals(null, lookup.lookup(null)); >> > > + assertEquals(null, lookup.lookup("X")); >> > > + assertEquals("--file", lookup.lookup("0")); >> > > + assertEquals("foo.txt", lookup.lookup("1")); >> > > + assertEquals("foo.txt", lookup.lookup("--file")); >> > > + assertEquals(null, lookup.lookup("foo.txt")); >> > > + } >> > > + >> > > } >> > > >> > > Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1619026&r1=1619025&r2=1619026&view=diff >> > > ============================================================================== >> > > --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original) >> > > +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Aug 20 >> > > 03:19:09 2014 >> > > @@ -21,10 +21,16 @@ >> > > <title>Changes</title> >> > > </properties> >> > > <body> >> > > - <release version="2.?.?" date="2014-??-??" description="Bug fixes >> > > and enhancements"> >> > > + <release version="2.?.?" date="2014-??-??" description="Bug fixes >> > > and enhancements"> >> > > <action issue="LOG4J2-783" dev="rpopma" type="fix" due-to="Minglei >> > > Lee"> >> > > PatternLayout should use platform character encoding by default, >> > > not UTF-8. >> > > </action> >> > > + <action issue="LOG4J2-771" dev="ggregory" type="add"> >> > > + Add lookup for application main arguments. >> > > + </action> >> > > + <action issue="LOG4J2-787" dev="ggregory" type="add"> >> > > + Add lookup for JVM arguments. >> > > + </action> >> > > </release> >> > > <release version="2.0.2" date="2014-08-16" description="Bug fixes >> > > and enhancements"> >> > > <action issue="LOG4J2-775" dev="ggregory" type="update"> >> > > >> > > Modified: >> > > logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm?rev=1619026&r1=1619025&r2=1619026&view=diff >> > > ============================================================================== >> > > --- logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm >> > > (original) >> > > +++ logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm >> > > Wed Aug 20 03:19:09 2014 >> > > @@ -869,6 +869,14 @@ public class Bar { >> > > <td>System environment variables</td> >> > > </tr> >> > > <tr> >> > > + <td>jmx-input</td> >> > > + <td>A JVM input argument accessed through JMX, but not >> > > a main argument; see <a >> > > href="http://docs.oracle.com/javase/8/docs/api/java/lang/management/RuntimeMXBean.html#getInputArguments--">RuntimeMXBean.html#getInputArguments()</a></td> >> > > + </tr> >> > > + <tr> >> > > + <td>main</td> >> > > + <td>A value set with <a >> > > href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/MapLookup.html#setMainArguments%28java.lang.String[]%29">MapLookup.setMainArguments(String[])</a></td> >> > > + </tr> >> > > + <tr> >> > > <td>map</td> >> > > <td>A value from a MapMessage</td> >> > > </tr> >> > > >> > > Modified: logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml >> > > URL: >> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml?rev=1619026&r1=1619025&r2=1619026&view=diff >> > > ============================================================================== >> > > --- logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml >> > > (original) >> > > +++ logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml Wed Aug >> > > 20 03:19:09 2014 >> > > @@ -98,11 +98,12 @@ >> > > <subsection name="MapLookup"> >> > > <a name="MapLookup"/> >> > > <p> >> > > - The MapLookup serves two purposes. >> > > + The MapLookup serves several purposes. >> > > </p> >> > > <ol> >> > > <li>Provide the base for Properties declared in the >> > > configuration file.</li> >> > > <li>Retrieve values from MapMessages in LogEvents.</li> >> > > + <li>Retrieve values set with <a >> > > href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/MapLookup.html#setMainArguments%28java.lang.String[]%29">MapLookup.setMainArguments(String[])</a></li> >> > > </ol> >> > > <p> >> > > The first item simply means that the MapLookup is used to >> > > substitute properties that are defined >> > > >> > > >> > >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: [email protected] >> > For additional commands, e-mail: [email protected] >> > >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [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 > > > > > -- > Matt Sicker <[email protected]>
