You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2013/01/17 09:17:56 UTC

svn commit: r1434585 - in /logging/log4j/log4j2/trunk: api/src/main/java/org/apache/logging/log4j/ api/src/main/java/org/apache/logging/log4j/simple/ api/src/main/java/org/apache/logging/log4j/status/ api/src/main/java/org/apache/logging/log4j/util/ co...

Author: rgoers
Date: Thu Jan 17 08:17:56 2013
New Revision: 1434585

URL: http://svn.apache.org/viewvc?rev=1434585&view=rev
Log:
LOG4J2-150 - Convert all System.getProperty calls to use PropertiesUtil to suppress SecurityExceptions.

Added:
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
      - copied, changed from r1434492, logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropsUtil.java
Removed:
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropsUtil.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/PropertiesUtil.java
Modified:
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/LogManager.java
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/ThreadContext.java
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
    logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Constants.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Loader.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/OptionConverter.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/UUIDUtil.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/lookup/SystemPropertiesLookup.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java
    logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/LogManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/LogManager.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/LogManager.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/LogManager.java Thu Jan 17 08:17:56 2013
@@ -29,7 +29,7 @@ import org.apache.logging.log4j.spi.Logg
 import org.apache.logging.log4j.spi.LoggerContextFactory;
 import org.apache.logging.log4j.spi.Provider;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.util.PropsUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.ProviderUtil;
 
 /**
@@ -61,7 +61,7 @@ public class LogManager {
      */
     static {
         // Shortcut binding to force a specific logging implementation.
-        final PropsUtil managerProps = PropsUtil.getComponentProperties();
+        final PropertiesUtil managerProps = PropertiesUtil.getProperties();
         final String factoryClass = managerProps.getStringProperty(FACTORY_PROPERTY_NAME);
         final ClassLoader cl = ProviderUtil.findClassLoader();
         if (factoryClass != null) {

Modified: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/ThreadContext.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/ThreadContext.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/ThreadContext.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/ThreadContext.java Thu Jan 17 08:17:56 2013
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.spi.Logg
 import org.apache.logging.log4j.spi.Provider;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.util.PropsUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.ProviderUtil;
 
 import java.io.Serializable;
@@ -62,18 +62,21 @@ public final class ThreadContext  {
 
     private static final String THREAD_CONTEXT_KEY = "log4j2.threadContextMap";
 
-    private static boolean all = Boolean.getBoolean(DISABLE_ALL);
+    private static boolean all;
 
-    private static boolean useMap = !(Boolean.getBoolean(DISABLE_MAP) || all);
+    private static boolean useMap;
 
-    private static boolean useStack = !(Boolean.getBoolean(DISABLE_STACK) || all);
+    private static boolean useStack;
 
     private static ThreadContextMap contextMap;
 
     private static final Logger LOGGER = StatusLogger.getLogger();
 
     static {
-        final PropsUtil managerProps = PropsUtil.getComponentProperties();
+        final PropertiesUtil managerProps = PropertiesUtil.getProperties();
+        all = managerProps.getBooleanProperty(DISABLE_ALL);
+        useMap = !(managerProps.getBooleanProperty(DISABLE_MAP) || all);
+        useStack = !(managerProps.getBooleanProperty(DISABLE_STACK) || all);
         String threadContextMapName = managerProps.getStringProperty(THREAD_CONTEXT_KEY);
         final ClassLoader cl = ProviderUtil.findClassLoader();
         if (threadContextMapName != null) {

Modified: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java Thu Jan 17 08:17:56 2013
@@ -29,7 +29,7 @@ import org.apache.logging.log4j.ThreadCo
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.spi.AbstractLogger;
-import org.apache.logging.log4j.util.PropsUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**
  *  This is the default logger that is used when no suitable logging implementation is available.
@@ -57,7 +57,7 @@ public class SimpleLogger extends Abstra
 
     public SimpleLogger(final String name, final Level defaultLevel, final boolean showLogName, final boolean showShortLogName,
                         final boolean showDateTime, final boolean showContextMap, final String dateTimeFormat,
-                        final MessageFactory messageFactory, final PropsUtil props, final PrintStream stream) {
+                        final MessageFactory messageFactory, final PropertiesUtil props, final PrintStream stream) {
         super(name, messageFactory);
         final String lvl = props.getStringProperty(SimpleLoggerContext.SYSTEM_PREFIX + name + ".level");
         this.level = Level.toLevel(lvl, defaultLevel);

Modified: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java Thu Jan 17 08:17:56 2013
@@ -28,7 +28,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.spi.AbstractLogger;
 import org.apache.logging.log4j.spi.LoggerContext;
-import org.apache.logging.log4j.util.PropsUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**
  *
@@ -44,7 +44,7 @@ public class SimpleLoggerContext impleme
     /** Properties loaded from simplelog.properties */
     private final Properties simpleLogProps = new Properties();
 
-    private final PropsUtil props;
+    private final PropertiesUtil props;
 
     /** Include the instance name in the log message? */
     private final boolean showLogName;
@@ -65,7 +65,7 @@ public class SimpleLoggerContext impleme
     private final PrintStream stream;
 
     public SimpleLoggerContext() {
-        props = new PropsUtil("log4j2.simplelog.properties");
+        props = new PropertiesUtil("log4j2.simplelog.properties");
 
         showContextMap = props.getBooleanProperty(SYSTEM_PREFIX + "showContextMap", false);
         showLogName = props.getBooleanProperty(SYSTEM_PREFIX + "showlogname", false);

Modified: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java Thu Jan 17 08:17:56 2013
@@ -17,6 +17,7 @@
 package org.apache.logging.log4j.status;
 
 import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 import java.io.PrintStream;
 
@@ -39,7 +40,7 @@ public class StatusConsoleListener imple
      * default value of FATAL.
      */
     public StatusConsoleListener() {
-        final String str = System.getProperty(STATUS_LEVEL);
+        final String str = PropertiesUtil.getProperties().getStringProperty(STATUS_LEVEL);
         if (str != null) {
             level = Level.toLevel(str, Level.FATAL);
         }

Modified: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java Thu Jan 17 08:17:56 2013
@@ -21,7 +21,7 @@ import org.apache.logging.log4j.spi.Abst
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.util.PropsUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -60,7 +60,7 @@ public final class StatusLogger extends 
     private final ReentrantLock msgLock = new ReentrantLock();
 
     private StatusLogger() {
-        final PropsUtil props = new PropsUtil("log4j2.StatusLogger.properties");
+        final PropertiesUtil props = new PropertiesUtil("log4j2.StatusLogger.properties");
         this.logger = new SimpleLogger("StatusLogger", Level.ERROR, false, true, false, false, "", null, props, System.err);
     }
 
@@ -246,7 +246,7 @@ public final class StatusLogger extends 
     private class BoundedQueue<E> extends ConcurrentLinkedQueue<E> {
 
         private static final long serialVersionUID = -3945953719763255337L;
-        
+
         private final int size;
 
         public BoundedQueue(final int size) {

Copied: logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java (from r1434492, logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropsUtil.java)
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java?p2=logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java&p1=logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropsUtil.java&r1=1434492&r2=1434585&rev=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropsUtil.java (original)
+++ logging/log4j/log4j2/trunk/api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java Thu Jan 17 08:17:56 2013
@@ -16,6 +16,9 @@
  */
 package org.apache.logging.log4j.util;
 
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.status.StatusLogger;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
@@ -23,21 +26,23 @@ import java.util.Properties;
 /**
  * Utility class to help with accessing System Properties.
  */
-public class PropsUtil {
+public class PropertiesUtil {
 
     private final Properties props;
 
-    private static final PropsUtil LOG4J_PROPERTIES = new PropsUtil("log4j2.component.properties");
+    private static final PropertiesUtil LOG4J_PROPERTIES = new PropertiesUtil("log4j2.component.properties");
+
+    private Logger logger;
 
-    public static PropsUtil getComponentProperties() {
+    public static PropertiesUtil getProperties() {
         return LOG4J_PROPERTIES;
     }
 
-    public PropsUtil(final Properties props) {
+    public PropertiesUtil(final Properties props) {
         this.props = props;
     }
 
-    public PropsUtil(final String propsLocn) {
+    public PropertiesUtil(final String propsLocn) {
         this.props = new Properties();
         final ClassLoader loader = ProviderUtil.findClassLoader();
         final InputStream in = loader.getResourceAsStream(propsLocn);
@@ -71,8 +76,26 @@ public class PropsUtil {
         return (prop == null) ? defaultValue : prop;
     }
 
+    public boolean getBooleanProperty(final String name) {
+        return getBooleanProperty(name, false);
+    }
+
     public boolean getBooleanProperty(final String name, final boolean defaultValue) {
         final String prop = getStringProperty(name);
         return (prop == null) ? defaultValue : "true".equalsIgnoreCase(prop);
     }
+
+    /**
+     * Return the system properties or an empty Properties object if an error occurs.
+     * @return The system properties.
+     */
+    public static Properties getSystemProperties() {
+        try {
+            return new Properties(System.getProperties());
+        } catch (final SecurityException ex) {
+            StatusLogger.getLogger().error("Unable to access system properties.");
+            // Sandboxed - can't read System Properties
+            return new Properties();
+        }
+    }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java Thu Jan 17 08:17:56 2013
@@ -24,6 +24,7 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.helpers.Loader;
 import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -100,7 +101,9 @@ public final class ConsoleAppender exten
         final PrintStream printStream = target == Target.SYSTEM_OUT ?
             follow ? new PrintStream(new SystemOutStream()) : System.out :
             follow ? new PrintStream(new SystemErrStream()) : System.err;
-        if (!System.getProperty("os.name").startsWith("Windows") || Boolean.getBoolean("log4j.skipJansi")) {
+        PropertiesUtil propsUtil = PropertiesUtil.getProperties();
+        if (!propsUtil.getStringProperty("os.name").startsWith("Windows") ||
+            propsUtil.getBooleanProperty("log4j.skipJansi")) {
             return printStream;
         } else {
             try {

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java Thu Jan 17 08:17:56 2013
@@ -39,6 +39,7 @@ import org.apache.logging.log4j.core.loo
 import org.apache.logging.log4j.core.lookup.StrLookup;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Array;
@@ -222,14 +223,16 @@ public class BaseConfiguration extends A
         setName(DefaultConfiguration.DEFAULT_NAME);
         final Layout layout = PatternLayout.createLayout("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n",
             null, null, null);
-        final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
+        final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false",
+            "true");
         appender.start();
         addAppender(appender);
         final LoggerConfig root = getRootLogger();
         root.addAppender(appender, null, null);
 
-        final String levelName = System.getProperty(DefaultConfiguration.DEFAULT_LEVEL);
-        final Level level = levelName != null && Level.valueOf(levelName) != null ? Level.valueOf(levelName) : Level.ERROR;
+        final String levelName = PropertiesUtil.getProperties().getStringProperty(DefaultConfiguration.DEFAULT_LEVEL);
+        final Level level = levelName != null && Level.valueOf(levelName) != null ?
+            Level.valueOf(levelName) : Level.ERROR;
         root.setLevel(level);
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java Thu Jan 17 08:17:56 2013
@@ -22,6 +22,8 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.helpers.FileUtils;
 import org.apache.logging.log4j.core.helpers.Loader;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -53,7 +55,7 @@ import java.util.TreeSet;
  * factory to be the first one inspected. See
  * {@linkplain XMLConfigurationFactory} for an example.</li>
  * </ol>
- * 
+ *
  * If the ConfigurationFactory that was added returns null on a call to
  * getConfiguration the any other ConfigurationFactories found as plugins will
  * be called in their respective order. DefaultConfiguration is always called
@@ -94,7 +96,7 @@ public abstract class ConfigurationFacto
      * @return the ConfigurationFactory.
      */
     public static ConfigurationFactory getInstance() {
-        final String factoryClass = System.getProperty(CONFIGURATION_FACTORY_PROPERTY);
+        final String factoryClass = PropertiesUtil.getProperties().getStringProperty(CONFIGURATION_FACTORY_PROPERTY);
         if (factoryClass != null) {
             addFactory(factoryClass);
         }
@@ -322,7 +324,7 @@ public abstract class ConfigurationFacto
         public Configuration getConfiguration(final String name, final URI configLocation) {
 
             if (configLocation == null) {
-                final String config = System.getProperty(CONFIGURATION_FILE_PROPERTY);
+                final String config = PropertiesUtil.getProperties().getStringProperty(CONFIGURATION_FILE_PROPERTY);
                 if (config != null) {
                     final ClassLoader loader = this.getClass().getClassLoader();
                     final ConfigurationSource source = getInputFromString(config, loader);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java Thu Jan 17 08:17:56 2013
@@ -21,6 +21,7 @@ import org.apache.logging.log4j.core.App
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.appender.ConsoleAppender;
 import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**
  * The default configuration writes all output to the Console using the default logging level. You configure default logging level by setting the
@@ -46,14 +47,16 @@ public class DefaultConfiguration extend
         setName(DEFAULT_NAME);
         final Layout layout = PatternLayout.createLayout("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n",
             null, null, null);
-        final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
+        final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false",
+            "true");
         appender.start();
         addAppender(appender);
         final LoggerConfig root = getRootLogger();
         root.addAppender(appender, null, null);
 
-        final String levelName = System.getProperty(DEFAULT_LEVEL);
-        final Level level = levelName != null && Level.valueOf(levelName) != null ? Level.valueOf(levelName) : Level.ERROR;
+        final String levelName = PropertiesUtil.getProperties().getStringProperty(DEFAULT_LEVEL);
+        final Level level = levelName != null && Level.valueOf(levelName) != null ?
+            Level.valueOf(levelName) : Level.ERROR;
         root.setLevel(level);
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Constants.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Constants.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Constants.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Constants.java Thu Jan 17 08:17:56 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.helpers;
 
+import org.apache.logging.log4j.util.PropertiesUtil;
+
 /**
  * Log4j Constants.
  */
@@ -34,7 +36,7 @@ public final class Constants {
     /**
      * Line separator.
      */
-    public static final String LINE_SEP = PropertiesUtil.getSystemProperty("line.separator", "\n");
+    public static final String LINE_SEP = PropertiesUtil.getProperties().getStringProperty("line.separator", "\n");
 
     /**
      * Number of milliseconds in a second.

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Loader.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Loader.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Loader.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/Loader.java Thu Jan 17 08:17:56 2013
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.he
 
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 import java.io.InputStream;
 import java.io.InterruptedIOException;
@@ -36,7 +37,7 @@ public final class Loader {
     private static final Logger LOGGER = StatusLogger.getLogger();
 
     static {
-        final String ignoreTCLProp = OptionConverter.getSystemProperty("log4j.ignoreTCL", null);
+        final String ignoreTCLProp = PropertiesUtil.getProperties().getStringProperty("log4j.ignoreTCL", null);
         if (ignoreTCLProp != null) {
             ignoreTCL = OptionConverter.toBoolean(ignoreTCLProp, true);
         }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/OptionConverter.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/OptionConverter.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/OptionConverter.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/OptionConverter.java Thu Jan 17 08:17:56 2013
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.he
 
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 import java.util.Locale;
 import java.util.Properties;
@@ -84,26 +85,6 @@ public final class OptionConverter {
         return sbuf.toString();
     }
 
-
-    /**
-     * Very similar to <code>System.getProperty</code> except
-     * that the {@link SecurityException} is hidden.
-     *
-     * @param key The key to search for.
-     * @param def The default value to return.
-     * @return the string value of the system property, or the default
-     *         value if there is no property with that key.
-     */
-    public static String getSystemProperty(final String key, final String def) {
-        try {
-            return System.getProperty(key, def);
-        } catch (final Throwable e) { // MS-Java throws com.ms.security.SecurityExceptionEx
-            LOGGER.debug("Was not allowed to read system property \"" + key + "\".");
-            return def;
-        }
-    }
-
-
     public static Object instantiateByKey(final Properties props, final String key, final Class<?> superClass,
                                    final Object defaultValue) {
 
@@ -327,7 +308,7 @@ public final class OptionConverter {
                     j += DELIM_START_LEN;
                     final String key = val.substring(j, k);
                     // first try in System properties
-                    String replacement = getSystemProperty(key, null);
+                    String replacement = PropertiesUtil.getProperties().getStringProperty(key, null);
                     // then try props parameter
                     if (replacement == null && props != null) {
                         replacement = props.getProperty(key);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/UUIDUtil.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/UUIDUtil.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/UUIDUtil.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/helpers/UUIDUtil.java Thu Jan 17 08:17:56 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.helpers;
 
+import org.apache.logging.log4j.util.PropertiesUtil;
+
 import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
@@ -115,7 +117,7 @@ public final class UUIDUtil {
         long rand = uuidSequence;
         final Runtime runtime = Runtime.getRuntime();
         synchronized (runtime) {
-            String assigned = System.getProperty(ASSIGNED_SEQUENCES);
+            String assigned = PropertiesUtil.getProperties().getStringProperty(ASSIGNED_SEQUENCES);
             long[] sequences;
             if (assigned == null) {
                 sequences = new long[0];

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java Thu Jan 17 08:17:56 2013
@@ -23,6 +23,7 @@ import org.apache.logging.log4j.core.sel
 import org.apache.logging.log4j.core.selector.ContextSelector;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.spi.LoggerContextFactory;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**
  * Factory to locate a ContextSelector and then load a LoggerContext.
@@ -37,7 +38,7 @@ public class Log4jContextFactory impleme
      * Constructor that initializes the ContextSelector.
      */
     public Log4jContextFactory() {
-        final String sel = System.getProperty(Constants.LOG4J_CONTEXT_SELECTOR);
+        final String sel = PropertiesUtil.getProperties().getStringProperty(Constants.LOG4J_CONTEXT_SELECTOR);
         if (sel != null) {
             try {
                 final Class clazz = Loader.loadClass(sel);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/lookup/SystemPropertiesLookup.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/lookup/SystemPropertiesLookup.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/lookup/SystemPropertiesLookup.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/lookup/SystemPropertiesLookup.java Thu Jan 17 08:17:56 2013
@@ -31,7 +31,11 @@ public class SystemPropertiesLookup impl
      * @return The value for the key.
      */
     public String lookup(final String key) {
-        return System.getProperty(key);
+        try {
+            return System.getProperty(key);
+        } catch (Exception ex) {
+            return null;
+        }
     }
 
     /**
@@ -41,6 +45,10 @@ public class SystemPropertiesLookup impl
      * @return The value associated with the key.
      */
     public String lookup(final LogEvent event, final String key) {
-        return System.getProperty(key);
+        try {
+            return System.getProperty(key);
+        } catch (Exception ex) {
+            return null;
+        }
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java Thu Jan 17 08:17:56 2013
@@ -44,7 +44,7 @@ import org.apache.logging.log4j.core.app
 import org.apache.logging.log4j.core.helpers.CyclicBuffer;
 import org.apache.logging.log4j.core.helpers.NameUtil;
 import org.apache.logging.log4j.core.helpers.NetUtils;
-import org.apache.logging.log4j.core.helpers.PropertiesUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
 
 public class SMTPManager extends AbstractManager {
     private static final SMTPManagerFactory factory = new SMTPManagerFactory();
@@ -123,7 +123,7 @@ public class SMTPManager extends Abstrac
 
     /**
      * Send the contents of the cyclic buffer as an e-mail message.
-     * @param appendEvent 
+     * @param appendEvent
      */
     public void sendEvents(final Layout<?> layout, final LogEvent appendEvent) {
         if (message == null) {
@@ -178,7 +178,7 @@ public class SMTPManager extends Abstrac
             final byte[] bytes = layout.toByteArray(priorEvent);
             out.write(bytes);
         }
-        
+
         final byte[] bytes = layout.toByteArray(appendEvent);
         out.write(bytes);
     }

Modified: logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java (original)
+++ logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java Thu Jan 17 08:17:56 2013
@@ -24,6 +24,7 @@ import org.apache.flume.node.nodemanager
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.config.ConfigurationException;
 import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.core.helpers.Constants;
 import org.apache.logging.log4j.core.helpers.NameUtil;
 
 import java.util.Locale;
@@ -42,8 +43,6 @@ public class FlumeEmbeddedManager extend
 
     protected static final String SOURCE_NAME = "log4j-source";
 
-    private static final String LINE_SEP = System.getProperty("file.separator");
-
     private final Log4jEventSource source;
 
     private final String shortName;
@@ -201,8 +200,8 @@ public class FlumeEmbeddedManager extend
                 props.put(name + ".channels", "file");
                 props.put(name + ".channels.file.type", "file");
                 if (dataDir != null && dataDir.length() > 0) {
-                    if (!dataDir.endsWith(LINE_SEP)) {
-                        dataDir = dataDir + LINE_SEP;
+                    if (!dataDir.endsWith(Constants.LINE_SEP)) {
+                        dataDir = dataDir + Constants.LINE_SEP;
                     }
 
                     props.put(name + ".channels.file.checkpointDir", dataDir + "checkpoint");

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1434585&r1=1434584&r2=1434585&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Thu Jan 17 08:17:56 2013
@@ -23,6 +23,9 @@
 
   <body>
     <release version="2.0-beta4" date="TBD" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-150" dev="rgoers" type="fix">
+        Convert all System.getProperty calls to use PropertiesUtil to suppress SecurityExceptions.
+      </action>
       <action issue="LOG4J2-147" dev="rgoers" type="fix" due-to="William Burns">
         ThreadContextMapFilter was matching on the key instead of the value of the key.
       </action>