1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config;
18
19 import java.io.File;
20 import java.util.List;
21
22 import org.apache.logging.log4j.core.LoggerContext;
23 import org.apache.logging.log4j.core.util.FileWatcher;
24
25
26
27
28 public class ConfiguratonFileWatcher implements FileWatcher {
29
30 private final Reconfigurable reconfigurable;
31 private final List<ConfigurationListener> configurationListeners;
32
33 public ConfiguratonFileWatcher(final Reconfigurable reconfigurable, final List<ConfigurationListener> configurationListeners) {
34 this.reconfigurable = reconfigurable;
35 this.configurationListeners = configurationListeners;
36 }
37
38 public List<ConfigurationListener> getListeners() {
39 return configurationListeners;
40 }
41
42
43 @Override
44 public void fileModified(final File file) {
45 for (final ConfigurationListener configurationListener : configurationListeners) {
46 LoggerContext.getContext(false).submitDaemon(new ReconfigurationRunnable(configurationListener, reconfigurable));
47 }
48 }
49
50
51
52
53 private static class ReconfigurationRunnable implements Runnable {
54
55 private final ConfigurationListener configurationListener;
56 private final Reconfigurable reconfigurable;
57
58 public ReconfigurationRunnable(final ConfigurationListener configurationListener, final Reconfigurable reconfigurable) {
59 this.configurationListener = configurationListener;
60 this.reconfigurable = reconfigurable;
61 }
62
63 @Override
64 public void run() {
65 configurationListener.onChange(reconfigurable);
66 }
67 }
68 }