logging-log4j2 icon indicating copy to clipboard operation
logging-log4j2 copied to clipboard

DefaultPropertyComponentBuilder generates invalid "Property" Component

Open JWT007 opened this issue 8 months ago • 5 comments

Log4j 2.24.3 .---- The DefaultPropertyComponentBuilder does not generate a valid Property Component.

A Log4j XML configuration property should look like this:

<Property name="p1" value="foobar"/>

However, if the ConfigurationBuilder.newProperty("p1", "foobar") is called, it generates a ComponentBuilder equivalent to this.

<Property name="p1">foobar</Property>

This is because in the PropertyComponentBuilder constructor here:

public DefaultPropertyComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String name, final String value) {
   super(builder, name, "Property", value);
 }

... the value gets passed to the super method as the element content value and not as the value attribute.


Correct would probably be:

public DefaultPropertyComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String name, final String value) {
   super(builder, name, "Property", null);
   if (value != null) {
     this.addAttribute("value", value);
   }
 }

JWT007 avatar Feb 20 '25 15:02 JWT007