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.LoggerContext;
22 import org.apache.logging.log4j.core.config.Configuration;
23 import org.apache.logging.log4j.core.config.ConfigurationSource;
24 import org.apache.logging.log4j.core.config.json.JsonConfiguration;
25
26 import com.fasterxml.jackson.core.JsonParser;
27 import com.fasterxml.jackson.databind.ObjectMapper;
28 import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
29
30 public class YamlConfiguration extends JsonConfiguration {
31
32 public YamlConfiguration(final LoggerContext loggerContext, final ConfigurationSource configSource) {
33 super(loggerContext, configSource);
34 }
35
36 @Override
37 protected ObjectMapper getObjectMapper() {
38 return new ObjectMapper(new YAMLFactory()).configure(JsonParser.Feature.ALLOW_COMMENTS, true);
39 }
40
41 @Override
42 public Configuration reconfigure() {
43 try {
44 final ConfigurationSource source = getConfigurationSource().resetInputStream();
45 if (source == null) {
46 return null;
47 }
48 return new YamlConfiguration(getLoggerContext(), source);
49 } catch (final IOException ex) {
50 LOGGER.error("Cannot locate file {}", getConfigurationSource(), ex);
51 }
52 return null;
53 }
54 }