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 org.apache.logging.log4j.core.util.FileWatcher;
20 import org.apache.logging.log4j.core.util.Log4jThread;
21
22 import java.io.File;
23 import java.util.List;
24
25
26
27
28 public class ConfiguratonFileWatcher implements FileWatcher {
29
30 private Reconfigurable reconfigurable;
31 private List<ConfigurationListener> listeners;
32
33 public ConfiguratonFileWatcher(Reconfigurable reconfigurable, final List<ConfigurationListener> listeners) {
34 this.reconfigurable = reconfigurable;
35 this.listeners = listeners;
36 }
37
38
39 @Override
40 public void fileModified(File file) {
41 for (final ConfigurationListener listener : listeners) {
42 final Thread thread = new Log4jThread(new ReconfigurationWorker(listener, reconfigurable));
43 thread.setDaemon(true);
44 thread.start();
45 }
46 }
47
48
49
50
51 private static class ReconfigurationWorker implements Runnable {
52
53 private final ConfigurationListener listener;
54 private final Reconfigurable reconfigurable;
55
56 public ReconfigurationWorker(final ConfigurationListener listener, final Reconfigurable reconfigurable) {
57 this.listener = listener;
58 this.reconfigurable = reconfigurable;
59 }
60
61 @Override
62 public void run() {
63 listener.onChange(reconfigurable);
64 }
65 }
66 }