diff --git a/pom.xml b/pom.xml index 15e35dd..0fb4774 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 logstash-forwarder-java logstash-forwarder-java - 0.1.2 + 0.1.3-SNAPSHOT logstash-forwarder-java Java version of logstash forwarder https://github.com/didfet/logstash-forwarder-java diff --git a/src/main/java/info/fetter/logstashforwarder/FileWatcher.java b/src/main/java/info/fetter/logstashforwarder/FileWatcher.java index db60ce9..1c36b6a 100644 --- a/src/main/java/info/fetter/logstashforwarder/FileWatcher.java +++ b/src/main/java/info/fetter/logstashforwarder/FileWatcher.java @@ -43,6 +43,7 @@ public class FileWatcher { private Map newWatchMap = new HashMap(); private FileState[] savedStates; private int maxSignatureLength; + private boolean tail = false; public FileWatcher() { try { @@ -60,6 +61,13 @@ public class FileWatcher { } } processModifications(); + if(tail) { + for(FileState state : oldWatchMap.values()) { + if(state.getPointer() == 0) { + state.setPointer(state.getSize()); + } + } + } printWatchMap(); } @@ -324,4 +332,8 @@ public class FileWatcher { this.maxSignatureLength = maxSignatureLength; } + public void setTail(boolean tail) { + this.tail = tail; + } + } diff --git a/src/main/java/info/fetter/logstashforwarder/Forwarder.java b/src/main/java/info/fetter/logstashforwarder/Forwarder.java index faebcd7..9145f5e 100644 --- a/src/main/java/info/fetter/logstashforwarder/Forwarder.java +++ b/src/main/java/info/fetter/logstashforwarder/Forwarder.java @@ -53,6 +53,7 @@ public class Forwarder { private static ProtocolAdapter adapter; private static Random random = new Random(); private static int signatureLength = 4096; + private static boolean tailSelected = false; public static void main(String[] args) { try { @@ -64,6 +65,7 @@ public class Forwarder { // Logger.getLogger(FileReader.class).setAdditivity(false); watcher = new FileWatcher(); watcher.setMaxSignatureLength(signatureLength); + watcher.setTail(tailSelected); configManager = new ConfigurationManager(config); configManager.readConfiguration(); for(FilesSection files : configManager.getConfig().getFiles()) { @@ -117,6 +119,7 @@ public class Forwarder { Option quiet = new Option("quiet", "operate in quiet mode - only emit errors to log"); Option debug = new Option("debug", "operate in debug mode"); Option trace = new Option("trace", "operate in trace mode"); + Option tail = new Option("tail", "read new files from the end"); Option spoolSizeOption = OptionBuilder.withArgName("number of events") .hasArg() @@ -142,6 +145,7 @@ public class Forwarder { .addOption(quiet) .addOption(debug) .addOption(trace) + .addOption(tail) .addOption(signatureLengthOption) .addOption(configOption); CommandLineParser parser = new GnuParser(); @@ -168,6 +172,9 @@ public class Forwarder { if(line.hasOption("trace")) { logLevel = TRACE; } + if(line.hasOption("tail")) { + tailSelected = true; + } } catch(ParseException e) { printHelp(options); System.exit(1);;