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 final Reconfigurable reconfigurable;
31 private final List<ConfigurationListener> listeners;
32
33 public ConfiguratonFileWatcher(final Reconfigurable reconfigurable, final List<ConfigurationListener> listeners) {
34 this.reconfigurable = reconfigurable;
35 this.listeners = listeners;
36 }
37
38 public List<ConfigurationListener> getListeners() {
39 return listeners;
40 }
41
42
43 @Override
44 public void fileModified(final File file) {
45 for (final ConfigurationListener listener : listeners) {
46 final Thread thread = new Log4jThread(new ReconfigurationWorker(listener, reconfigurable));
47 thread.setDaemon(true);
48 thread.start();
49 }
50 }
51
52
53
54
55 private static class ReconfigurationWorker implements Runnable {
56
57 private final ConfigurationListener listener;
58 private final Reconfigurable reconfigurable;
59
60 public ReconfigurationWorker(final ConfigurationListener listener, final Reconfigurable reconfigurable) {
61 this.listener = listener;
62 this.reconfigurable = reconfigurable;
63 }
64
65 @Override
66 public void run() {
67 listener.onChange(reconfigurable);
68 }
69 }
70 }