Class PropertiesUtil

java.lang.Object
org.apache.logging.log4j.util.PropertiesUtil

public final class PropertiesUtil extends Object
Consider this class private.

Provides utility methods for managing Properties instances as well as access to the global configuration system. Properties by default are loaded from the system properties, system environment, and a classpath resource file named "log4j2.component.properties". Additional properties can be loaded by implementing a custom PropertySource service and specifying it via a ServiceLoader file called META-INF/services/org.apache.logging.log4j.util.PropertySource with a list of fully qualified class names implementing that interface.

See Also:
  • Constructor Details

    • PropertiesUtil

      public PropertiesUtil(Properties props)
      Constructs a PropertiesUtil using a given Properties object as its source of defined properties.
      Parameters:
      props - the Properties to use by default
    • PropertiesUtil

      public PropertiesUtil(String propertiesFileName)
      Constructs a PropertiesUtil for a given properties file name on the classpath. The properties specified in this file are used by default. If a property is not defined in this file, then the equivalent system property is used.
      Parameters:
      propertiesFileName - the location of properties file to load
  • Method Details

    • getProperties

      public static PropertiesUtil getProperties()
      Returns the PropertiesUtil used by Log4j.
      Returns:
      the main Log4j PropertiesUtil instance.
    • addPropertySource

      public void addPropertySource(PropertySource propertySource)
      Allows a PropertySource to be added after PropertiesUtil has been created.
      Parameters:
      propertySource - the PropertySource to add.
    • hasProperty

      public boolean hasProperty(String name)
      Returns true if the specified property is defined, regardless of its value (it may not have a value).
      Parameters:
      name - the name of the property to verify
      Returns:
      true if the specified property is defined, regardless of its value
    • getBooleanProperty

      public boolean getBooleanProperty(String name)
      Gets the named property as a boolean value. If the property matches the string "true" (case-insensitive), then it is returned as the boolean value true. Any other non-null text in the property is considered false.
      Parameters:
      name - the name of the property to look up
      Returns:
      the boolean value of the property or false if undefined.
    • getBooleanProperty

      public boolean getBooleanProperty(String name, boolean defaultValue)
      Gets the named property as a boolean value.
      Parameters:
      name - the name of the property to look up
      defaultValue - the default value to use if the property is undefined
      Returns:
      the boolean value of the property or defaultValue if undefined.
    • getBooleanProperty

      public boolean getBooleanProperty(String name, boolean defaultValueIfAbsent, boolean defaultValueIfPresent)
      Gets the named property as a boolean value.
      Parameters:
      name - the name of the property to look up
      defaultValueIfAbsent - the default value to use if the property is undefined
      defaultValueIfPresent - the default value to use if the property is defined but not assigned
      Returns:
      the boolean value of the property or defaultValue if undefined.
    • getBooleanProperty

      public Boolean getBooleanProperty(String[] prefixes, String key, Supplier<Boolean> supplier)
      Retrieves a property that may be prefixed by more than one string.
      Parameters:
      prefixes - The array of prefixes.
      key - The key to locate.
      supplier - The method to call to derive the default value. If the value is null, null will be returned if no property is found.
      Returns:
      The value or null if it is not found.
      Since:
      2.13.0
    • getCharsetProperty

      public Charset getCharsetProperty(String name)
      Gets the named property as a Charset value.
      Parameters:
      name - the name of the property to look up
      Returns:
      the Charset value of the property or Charset.defaultCharset() if undefined.
    • getCharsetProperty

      public Charset getCharsetProperty(String name, Charset defaultValue)
      Gets the named property as a Charset value. If we cannot find the named Charset, see if it is mapped in file Log4j-charsets.properties on the class path.
      Parameters:
      name - the name of the property to look up
      defaultValue - the default value to use if the property is undefined
      Returns:
      the Charset value of the property or defaultValue if undefined.
    • getDoubleProperty

      public double getDoubleProperty(String name, double defaultValue)
      Gets the named property as a double.
      Parameters:
      name - the name of the property to look up
      defaultValue - the default value to use if the property is undefined
      Returns:
      the parsed double value of the property or defaultValue if it was undefined or could not be parsed.
    • getIntegerProperty

      public int getIntegerProperty(String name, int defaultValue)
      Gets the named property as an integer.
      Parameters:
      name - the name of the property to look up
      defaultValue - the default value to use if the property is undefined
      Returns:
      the parsed integer value of the property or defaultValue if it was undefined or could not be parsed.
    • getIntegerProperty

      public Integer getIntegerProperty(String[] prefixes, String key, Supplier<Integer> supplier)
      Retrieves a property that may be prefixed by more than one string.
      Parameters:
      prefixes - The array of prefixes.
      key - The key to locate.
      supplier - The method to call to derive the default value. If the value is null, null will be returned if no property is found.
      Returns:
      The value or null if it is not found.
      Since:
      2.13.0
    • getLongProperty

      public long getLongProperty(String name, long defaultValue)
      Gets the named property as a long.
      Parameters:
      name - the name of the property to look up
      defaultValue - the default value to use if the property is undefined
      Returns:
      the parsed long value of the property or defaultValue if it was undefined or could not be parsed.
    • getLongProperty

      public Long getLongProperty(String[] prefixes, String key, Supplier<Long> supplier)
      Retrieves a property that may be prefixed by more than one string.
      Parameters:
      prefixes - The array of prefixes.
      key - The key to locate.
      supplier - The method to call to derive the default value. If the value is null, null will be returned if no property is found.
      Returns:
      The value or null if it is not found.
      Since:
      2.13.0
    • getDurationProperty

      public Duration getDurationProperty(String name, Duration defaultValue)
      Retrieves a Duration where the String is of the format nnn[unit] where nnn represents an integer value and unit represents a time unit.
      Parameters:
      name - The property name.
      defaultValue - The default value.
      Returns:
      The value of the String as a Duration or the default value, which may be null.
      Since:
      2.13.0
    • getDurationProperty

      public Duration getDurationProperty(String[] prefixes, String key, Supplier<Duration> supplier)
      Retrieves a property that may be prefixed by more than one string.
      Parameters:
      prefixes - The array of prefixes.
      key - The key to locate.
      supplier - The method to call to derive the default value. If the value is null, null will be returned if no property is found.
      Returns:
      The value or null if it is not found.
      Since:
      2.13.0
    • getStringProperty

      public String getStringProperty(String[] prefixes, String key, Supplier<String> supplier)
      Retrieves a property that may be prefixed by more than one string.
      Parameters:
      prefixes - The array of prefixes.
      key - The key to locate.
      supplier - The method to call to derive the default value. If the value is null, null will be returned if no property is found.
      Returns:
      The value or null if it is not found.
      Since:
      2.13.0
    • getStringProperty

      public String getStringProperty(String name)
      Gets the named property as a String.
      Parameters:
      name - the name of the property to look up
      Returns:
      the String value of the property or null if undefined.
    • getStringProperty

      public String getStringProperty(String name, String defaultValue)
      Gets the named property as a String.
      Parameters:
      name - the name of the property to look up
      defaultValue - the default value to use if the property is undefined
      Returns:
      the String value of the property or defaultValue if undefined.
    • getSystemProperties

      public static Properties getSystemProperties()
      Return the system properties or an empty Properties object if an error occurs.
      Returns:
      The system properties.
    • reload

      public void reload()
      Reloads all properties. This is primarily useful for unit tests.
      Since:
      2.10.0
    • extractSubset

      public static Properties extractSubset(Properties properties, String prefix)
      Extracts properties that start with or are equals to the specific prefix and returns them in a new Properties object with the prefix removed.
      Parameters:
      properties - The Properties to evaluate.
      prefix - The prefix to extract.
      Returns:
      The subset of properties.
    • partitionOnCommonPrefixes

      public static Map<String,Properties> partitionOnCommonPrefixes(Properties properties)
      Partitions a properties map based on common key prefixes up to the first period.
      Parameters:
      properties - properties to partition
      Returns:
      the partitioned properties where each key is the common prefix (minus the period) and the values are new property maps without the prefix and period in the key
      Since:
      2.6
    • partitionOnCommonPrefixes

      public static Map<String,Properties> partitionOnCommonPrefixes(Properties properties, boolean includeBaseKey)
      Partitions a properties map based on common key prefixes up to the first period.
      Parameters:
      properties - properties to partition
      includeBaseKey - when true if a key exists with no '.' the key will be included.
      Returns:
      the partitioned properties where each key is the common prefix (minus the period) and the values are new property maps without the prefix and period in the key
      Since:
      2.17.2
    • isOsWindows

      public boolean isOsWindows()
      Returns true if system properties tell us we are running on Windows.
      Returns:
      true if system properties tell us we are running on Windows.