diff --git a/src/main/java/info/fetter/logstashforwarder/Forwarder.java b/src/main/java/info/fetter/logstashforwarder/Forwarder.java index 3e32905..dc52bbb 100644 --- a/src/main/java/info/fetter/logstashforwarder/Forwarder.java +++ b/src/main/java/info/fetter/logstashforwarder/Forwarder.java @@ -80,7 +80,7 @@ public class Forwarder { configManager.readConfiguration(); for(FilesSection files : configManager.getConfig().getFiles()) { for(String path : files.getPaths()) { - watcher.addFilesToWatch(path, new Event(files.getFields()), FileWatcher.ONE_DAY); + watcher.addFilesToWatch(path, new Event(files.getFields()), files.getDeadTimeInSeconds() * 1000); } } watcher.initialize(); diff --git a/src/main/java/info/fetter/logstashforwarder/config/FilesSection.java b/src/main/java/info/fetter/logstashforwarder/config/FilesSection.java index 2344afe..43f9b2e 100644 --- a/src/main/java/info/fetter/logstashforwarder/config/FilesSection.java +++ b/src/main/java/info/fetter/logstashforwarder/config/FilesSection.java @@ -22,9 +22,13 @@ import java.util.Map; import org.apache.commons.lang.builder.ToStringBuilder; +import com.fasterxml.jackson.annotation.JsonProperty; + public class FilesSection { private List paths; private Map fields; + @JsonProperty("dead time") + private String deadTime = "24h"; public List getPaths() { return paths; @@ -41,12 +45,46 @@ public class FilesSection { public void setFields(Map fields) { this.fields = fields; } - + + public String getDeadTime() { + return deadTime; + } + + public int getDeadTimeInSeconds() { + int deadTimeInSeconds = 0; + String remaining = deadTime; + + if(deadTime.contains("h")) { + String[] splitByHour = deadTime.split("h",2); + if(splitByHour.length > 1) { + remaining = splitByHour[1]; + } + deadTimeInSeconds += Integer.parseInt(splitByHour[0]) * 3600; + } + if(remaining.contains("m")) { + String[] splitByMinute = remaining.split("m",2); + if(splitByMinute.length > 1) { + remaining = splitByMinute[1]; + } + deadTimeInSeconds += Integer.parseInt(splitByMinute[0]) * 60; + } + if(remaining.contains("s")) { + String[] splitBySecond = remaining.split("s",2); + deadTimeInSeconds += Integer.parseInt(splitBySecond[0]); + } + return deadTimeInSeconds; + } + + public void setDeadTime(String deadTime) { + this.deadTime = deadTime; + } + @Override public String toString() { - return new ToStringBuilder(this). - append("paths", paths). - append("fields", fields). - toString(); + return new ToStringBuilder(this). + append("paths", paths). + append("fields", fields). + append("dead time", deadTime). + toString(); } } diff --git a/src/test/java/info/fetter/logstashforwarder/config/ConfigurationManagerTest.java b/src/test/java/info/fetter/logstashforwarder/config/ConfigurationManagerTest.java index 36e9998..d5969a6 100644 --- a/src/test/java/info/fetter/logstashforwarder/config/ConfigurationManagerTest.java +++ b/src/test/java/info/fetter/logstashforwarder/config/ConfigurationManagerTest.java @@ -18,6 +18,7 @@ package info.fetter.logstashforwarder.config; */ import static org.apache.log4j.Level.DEBUG; +import static org.junit.Assert.*; import java.io.File; import java.io.IOException; @@ -51,5 +52,19 @@ public class ConfigurationManagerTest { ConfigurationManager manager = new ConfigurationManager(new File(ConfigurationManagerTest.class.getClassLoader().getResource("config1.json").getFile())); manager.readConfiguration(); logger.debug(manager.getConfig().toString()); + for(FilesSection files : manager.getConfig().getFiles()) { + logger.debug("File Section"); + for(String path : files.getPaths()) { + logger.debug(" - Path : " + path); + } + logger.debug(" - Dead time : " + files.getDeadTimeInSeconds()); + if(files.getDeadTime().equals("24h")) { + assertEquals(86400, files.getDeadTimeInSeconds()); + } else if(files.getDeadTime().equals("12h")) { + assertEquals(43200, files.getDeadTimeInSeconds()); + } else if(files.getDeadTime().equals("8h32m50s")) { + assertEquals(30770, files.getDeadTimeInSeconds()); + } + } } } diff --git a/src/test/resources/config1.json b/src/test/resources/config1.json index 82801c8..d045315 100644 --- a/src/test/resources/config1.json +++ b/src/test/resources/config1.json @@ -46,7 +46,14 @@ "paths": [ "/var/log/apache/httpd-*.log" ], - "fields": { "type": "apache" } + "fields": { "type": "apache" }, + "dead time": "12h" + }, { + "paths": [ + "/var/log/apache/error-*.log" + ], + "fields": { "type": "error" }, + "dead time": "8h32m50s" } ] } \ No newline at end of file