Skip to content

Commit 98cad4f

Browse files
Updated for review comments
Signed-off-by: MichaelMorris <michael.morris@est.tech>
1 parent a835c60 commit 98cad4f

File tree

4 files changed

+20
-49
lines changed

4 files changed

+20
-49
lines changed

log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public void start() {
331331
getConfigurationSource(),
332332
uris,
333333
watchManager.getIntervalSeconds());
334-
watchManager.addMonitorUris(configurationSource.getSource(), uris);
334+
watchMonitorUris();
335335
} else {
336336
LOGGER.info(
337337
"Start watching for changes to {} every {} seconds",
@@ -358,6 +358,17 @@ public void start() {
358358
LOGGER.info("Configuration {} started.", this);
359359
}
360360

361+
private void watchMonitorUris() {
362+
if (this instanceof Reconfigurable) {
363+
uris.stream().forEach(uri -> {
364+
Source source = new Source(uri);
365+
final ConfigurationFileWatcher watcher = new ConfigurationFileWatcher(
366+
this, (Reconfigurable) this, listeners, source.getFile().lastModified());
367+
watchManager.watch(source, watcher);
368+
});
369+
}
370+
}
371+
361372
private boolean hasAsyncLoggers() {
362373
if (root instanceof AsyncLoggerConfig) {
363374
return true;

log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFileWatcher.java

+8-30
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@
1717
package org.apache.logging.log4j.core.config;
1818

1919
import java.io.File;
20-
import java.net.URI;
21-
import java.util.HashMap;
2220
import java.util.List;
23-
import java.util.Map;
2421
import org.apache.logging.log4j.core.util.AbstractWatcher;
2522
import org.apache.logging.log4j.core.util.FileWatcher;
2623
import org.apache.logging.log4j.core.util.Source;
@@ -31,57 +28,38 @@
3128
*/
3229
public class ConfigurationFileWatcher extends AbstractWatcher implements FileWatcher {
3330

34-
private Map<File, Long> monitoredFiles = new HashMap<>();
31+
private File file;
32+
private long lastModifiedMillis;
3533

3634
public ConfigurationFileWatcher(
3735
final Configuration configuration,
3836
final Reconfigurable reconfigurable,
3937
final List<ConfigurationListener> configurationListeners,
4038
long lastModifiedMillis) {
4139
super(configuration, reconfigurable, configurationListeners);
40+
this.lastModifiedMillis = lastModifiedMillis;
4241
}
4342

4443
@Override
4544
public long getLastModified() {
46-
Long lastModifiedMillis = 0L;
47-
for (final File monitoredFile : monitoredFiles.keySet()) {
48-
if (monitoredFile.lastModified() > lastModifiedMillis) {
49-
lastModifiedMillis = monitoredFile.lastModified();
50-
}
51-
}
52-
return lastModifiedMillis;
45+
return file != null ? file.lastModified() : 0;
5346
}
5447

5548
@Override
5649
public void fileModified(final File file) {
57-
monitoredFiles.entrySet().stream()
58-
.forEach(monitoredFile ->
59-
monitoredFile.setValue(monitoredFile.getKey().lastModified()));
50+
lastModifiedMillis = file.lastModified();
6051
}
6152

6253
@Override
6354
public void watching(final Source source) {
64-
File file = source.getFile();
65-
monitoredFiles.put(file, file.lastModified());
55+
file = source.getFile();
56+
lastModifiedMillis = file.lastModified();
6657
super.watching(source);
6758
}
6859

69-
/**
70-
* Add the given URIs to be watched.
71-
*
72-
* @param monitorUris URIs to also watch
73-
*/
74-
public void addMonitorUris(final List<URI> monitorUris) {
75-
monitorUris.forEach(uri -> {
76-
File additionalFile = new Source(uri).getFile();
77-
monitoredFiles.put(additionalFile, additionalFile.lastModified());
78-
});
79-
}
80-
8160
@Override
8261
public boolean isModified() {
83-
return monitoredFiles.entrySet().stream()
84-
.anyMatch(file -> file.getValue() != file.getKey().lastModified());
62+
return lastModifiedMillis != file.lastModified();
8563
}
8664

8765
@Override

log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java

-4
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,4 @@ public String toString() {
382382
return null;
383383
}
384384
}
385-
386-
Source getSource() {
387-
return this.source;
388-
}
389385
}

log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java

-14
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import aQute.bnd.annotation.Resolution;
2121
import aQute.bnd.annotation.spi.ServiceConsumer;
2222
import java.io.File;
23-
import java.net.URI;
2423
import java.time.Instant;
2524
import java.util.Date;
2625
import java.util.HashMap;
@@ -371,17 +370,4 @@ public void watchFile(final File file, final FileWatcher fileWatcher) {
371370
final Source source = new Source(file);
372371
watch(source, watcher);
373372
}
374-
375-
/**
376-
* Add the given URIs to be monitored for the given source.
377-
*
378-
* @param source the source being watched.
379-
* @param monitorUris the URIs to also watch
380-
*/
381-
public void addMonitorUris(final Source source, final List<URI> monitorUris) {
382-
ConfigurationMonitor monitor = watchers.get(source);
383-
if (monitor != null && monitor.getWatcher() instanceof ConfigurationFileWatcher) {
384-
((ConfigurationFileWatcher) monitor.getWatcher()).addMonitorUris(monitorUris);
385-
}
386-
}
387373
}

0 commit comments

Comments
 (0)