[ https://issues.apache.org/jira/browse/LOG4J2-1912?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
R Ri updated LOG4J2-1912: ------------------------- Description: Hello everybody, I found a possible bug in class CompositeConfiguration: Unable to determine URI for configuration. However, the reconfiguration is completed. The solution: In line 154, Class CompositeConfiguration [log4j-core-2.8.1.jar] change the condition: {code:java} if (sourceURI != null)" --> "if (sourceURI == null) {code} Original code: {code:java} 145 @Override 146 public Configuration reconfigure() { 147 LOGGER.debug("Reconfiguring composite configuration"); 148 final List<AbstractConfiguration> configs = new ArrayList<>(); 149 final ConfigurationFactory factory = ConfigurationFactory.getInstance(); 150 for (final AbstractConfiguration config : configurations) { 151 final ConfigurationSource source = config.getConfigurationSource(); 152 final URI sourceURI = source.getURI(); 153 Configuration currentConfig; 154 if (sourceURI != null) { 155 LOGGER.warn("Unable to determine URI for configuration {}, changes to it will be ignored", 156 config.getName()); 157 currentConfig = factory.getConfiguration(getLoggerContext(), config.getName(), sourceURI); 158 if (currentConfig == null) { 159 LOGGER.warn("Unable to reload configuration {}, changes to it will be ignored", config.getName()); 160 currentConfig = config; 161 } 162 } else { 163 currentConfig = config; 164 } 165 configs.add((AbstractConfiguration) currentConfig); 166 167 } 168 169 return new CompositeConfiguration(configs); 170 } {code} So it makes sense, because after that it will be tried to reload the configuration again, and if it does not work, I get a warn, otherwise is ok. The changed code might look like this: {code:java} @Override public Configuration reconfigure() { LOGGER.debug("Reconfiguring composite configuration"); final List<AbstractConfiguration> configs = new ArrayList<>(); final ConfigurationFactory factory = ConfigurationFactory.getInstance(); for (final AbstractConfiguration config : configurations) { final ConfigurationSource source = config.getConfigurationSource(); final URI sourceURI = source.getURI(); if (sourceURI == null) { LOGGER.warn("Unable to determine URI for configuration {}, changes to it will be ignored", config.getName()); Configuration currentConfig = factory.getConfiguration(getLoggerContext(), config.getName(), sourceURI); if (currentConfig == null) { LOGGER.warn("Unable to reload configuration {}, changes to it will be ignored", config.getName()); } else { LOGGER.info("Able to reload configuration {}, changes to it will be completed", config.getName()); configs.add((AbstractConfiguration) currentConfig); } } else { configs.add(config); } } return new CompositeConfiguration(configs); } {code} Your feedback and questions are welcome. Thanks! Best regards, rri PS: Which criterias must I have to resolve it in the API on my own? was: Hello everybody, I found a possible bug in class CompositeConfiguration: Unable to determine URI for configuration. However, the reconfiguration is completed. The solution: In line 154, Class CompositeConfiguration [log4j-core-2.8.1.jar] change the condition: {code:java} if (sourceURI != null)" --> "if (sourceURI == null) {code} So it makes sense, because after that it will be tried to reload the configuration again, and if it does not work, I get a warn, otherwise is ok. The changed code could be seem like this: {code:java} @Override public Configuration reconfigure() { LOGGER.debug("Reconfiguring composite configuration"); final List<AbstractConfiguration> configs = new ArrayList<>(); final ConfigurationFactory factory = ConfigurationFactory.getInstance(); for (final AbstractConfiguration config : configurations) { final ConfigurationSource source = config.getConfigurationSource(); final URI sourceURI = source.getURI(); if (sourceURI == null) { LOGGER.warn("Unable to determine URI for configuration {}, changes to it will be ignored", config.getName()); Configuration currentConfig = factory.getConfiguration(getLoggerContext(), config.getName(), sourceURI); if (currentConfig == null) { LOGGER.warn("Unable to reload configuration {}, changes to it will be ignored", config.getName()); } else { LOGGER.warn("Able to reload configuration {}, changes to it will be completed", config.getName()); configs.add((AbstractConfiguration) currentConfig); } } else { configs.add(config); } } return new CompositeConfiguration(configs); } {code} Questions or tips are welcome. Best regards, rri PS: Which criterias must I have to resolve it in the API on my own? > CompositeConfiguration: Unable to determine URI for configuration. However, > the reconfiguration is completed. > ------------------------------------------------------------------------------------------------------------- > > Key: LOG4J2-1912 > URL: https://issues.apache.org/jira/browse/LOG4J2-1912 > Project: Log4j 2 > Issue Type: Bug > Components: API > Affects Versions: 2.8.1, 2.8.2 > Reporter: R Ri > Priority: Trivial > Original Estimate: 1h > Remaining Estimate: 1h > > Hello everybody, > I found a possible bug in class CompositeConfiguration: Unable to determine > URI for configuration. However, the reconfiguration is completed. > The solution: > In line 154, Class CompositeConfiguration [log4j-core-2.8.1.jar] change the > condition: > {code:java} > if (sourceURI != null)" --> "if (sourceURI == null) > {code} > Original code: > {code:java} > 145 @Override > 146 public Configuration reconfigure() { > 147 LOGGER.debug("Reconfiguring composite configuration"); > 148 final List<AbstractConfiguration> configs = new ArrayList<>(); > 149 final ConfigurationFactory factory = > ConfigurationFactory.getInstance(); > 150 for (final AbstractConfiguration config : configurations) { > 151 final ConfigurationSource source = > config.getConfigurationSource(); > 152 final URI sourceURI = source.getURI(); > 153 Configuration currentConfig; > 154 if (sourceURI != null) { > 155 LOGGER.warn("Unable to determine URI for configuration {}, > changes to it will be ignored", > 156 config.getName()); > 157 currentConfig = > factory.getConfiguration(getLoggerContext(), config.getName(), sourceURI); > 158 if (currentConfig == null) { > 159 LOGGER.warn("Unable to reload configuration {}, > changes to it will be ignored", config.getName()); > 160 currentConfig = config; > 161 } > 162 } else { > 163 currentConfig = config; > 164 } > 165 configs.add((AbstractConfiguration) currentConfig); > 166 > 167 } > 168 > 169 return new CompositeConfiguration(configs); > 170 } > {code} > So it makes sense, because after that it will be tried to reload the > configuration again, and if it does not work, I get a warn, otherwise is ok. > The changed code might look like this: > {code:java} > @Override > public Configuration reconfigure() { > LOGGER.debug("Reconfiguring composite configuration"); > final List<AbstractConfiguration> configs = new ArrayList<>(); > final ConfigurationFactory factory = > ConfigurationFactory.getInstance(); > for (final AbstractConfiguration config : configurations) { > final ConfigurationSource source = > config.getConfigurationSource(); > final URI sourceURI = source.getURI(); > if (sourceURI == null) { > LOGGER.warn("Unable to determine URI for configuration {}, > changes to it will be ignored", config.getName()); > Configuration currentConfig = > factory.getConfiguration(getLoggerContext(), config.getName(), sourceURI); > if (currentConfig == null) { > LOGGER.warn("Unable to reload configuration {}, changes > to it will be ignored", config.getName()); > } > else { > LOGGER.info("Able to reload configuration {}, changes to > it will be completed", config.getName()); > configs.add((AbstractConfiguration) currentConfig); > } > } else { > configs.add(config); > } > } > return new CompositeConfiguration(configs); > } > {code} > Your feedback and questions are welcome. Thanks! > Best regards, > rri > PS: Which criterias must I have to resolve it in the API on my own? -- This message was sent by Atlassian JIRA (v6.3.15#6346)