1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config.yaml;
18
19 import java.io.IOException;
20
21 import org.apache.logging.log4j.core.config.Configuration;
22 import org.apache.logging.log4j.core.config.ConfigurationSource;
23 import org.apache.logging.log4j.core.config.json.JsonConfiguration;
24
25 import com.fasterxml.jackson.core.JsonParser;
26 import com.fasterxml.jackson.databind.ObjectMapper;
27 import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
28
29 public class YamlConfiguration extends JsonConfiguration {
30
31 public YamlConfiguration(final ConfigurationSource configSource) {
32 super(configSource);
33 }
34
35 @Override
36 protected ObjectMapper getObjectMapper() {
37 return new ObjectMapper(new YAMLFactory()).configure(JsonParser.Feature.ALLOW_COMMENTS, true);
38 }
39
40 @Override
41 public Configuration reconfigure() {
42 try {
43 final ConfigurationSource source = getConfigurationSource().resetInputStream();
44 if (source == null) {
45 return null;
46 }
47 return new YamlConfiguration(source);
48 } catch (final IOException ex) {
49 LOGGER.error("Cannot locate file {}", getConfigurationSource(), ex);
50 }
51 return null;
52 }
53 }