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 private static final long serialVersionUID = 1L;
32
33 public YamlConfiguration(final ConfigurationSource configSource) {
34 super(configSource);
35 }
36
37 @Override
38 protected ObjectMapper getObjectMapper() {
39 return new ObjectMapper(new YAMLFactory()).configure(JsonParser.Feature.ALLOW_COMMENTS, true);
40 }
41
42 @Override
43 public Configuration reconfigure() {
44 try {
45 final ConfigurationSource source = getConfigurationSource().resetInputStream();
46 if (source == null) {
47 return null;
48 }
49 return new YamlConfiguration(source);
50 } catch (final IOException ex) {
51 LOGGER.error("Cannot locate file {}", getConfigurationSource(), ex);
52 }
53 return null;
54 }
55 }