mirror of
https://github.com/Febbweiss/logstash-forwarder-java.git
synced 2026-03-04 22:25:39 +00:00
Created Parameters, ParametersManager, InputWatcher, Watcher.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package info.fetter.logstashforwarder;
|
||||
|
||||
import info.fetter.logstashforwarder.config.FilesSection;
|
||||
import info.fetter.logstashforwarder.config.Parameters;
|
||||
import info.fetter.logstashforwarder.util.AdapterException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
public class InputWatcher implements Watcher {
|
||||
private static final Logger logger = Logger.getLogger(InputWatcher.class);
|
||||
private Event stdinFields;
|
||||
private boolean stdinConfigured = false;
|
||||
private InputReader reader;
|
||||
|
||||
public void addFilesToWatch(FilesSection files) {
|
||||
for(String path : files.getPaths()) {
|
||||
if(path.equals("-")) {
|
||||
logger.error("Watching stdin");
|
||||
stdinFields = new Event(files.getFields());
|
||||
stdinConfigured = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int readStdin(InputReader reader) throws AdapterException, IOException {
|
||||
if(stdinConfigured) {
|
||||
logger.debug("Reading stdin");
|
||||
reader.setFields(stdinFields);
|
||||
int numberOfLinesRead = reader.readInput();
|
||||
return numberOfLinesRead;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public Reader getReader() {
|
||||
return reader;
|
||||
}
|
||||
|
||||
public int readFiles() throws AdapterException, IOException {
|
||||
return readStdin(reader);
|
||||
}
|
||||
|
||||
public void setParameters(Parameters parameters) {
|
||||
reader = new InputReader(parameters.getSpoolSize(), System.in);
|
||||
}
|
||||
}
|
||||
14
src/main/java/info/fetter/logstashforwarder/Watcher.java
Normal file
14
src/main/java/info/fetter/logstashforwarder/Watcher.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package info.fetter.logstashforwarder;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import info.fetter.logstashforwarder.config.FilesSection;
|
||||
import info.fetter.logstashforwarder.config.Parameters;
|
||||
import info.fetter.logstashforwarder.util.AdapterException;
|
||||
|
||||
public interface Watcher {
|
||||
public void addFilesToWatch(FilesSection files);
|
||||
public Reader getReader();
|
||||
public int readFiles() throws AdapterException, IOException;
|
||||
public void setParameters(Parameters parameters);
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
package info.fetter.logstashforwarder.config;
|
||||
|
||||
import static org.apache.log4j.Level.INFO;
|
||||
|
||||
import org.apache.log4j.Level;
|
||||
|
||||
public class Parameters {
|
||||
private final String SINCEDB = ".logstash-forwarder-java";
|
||||
private int spoolSize = 1024;
|
||||
private int idleTimeout = 5000;
|
||||
private Level logLevel = INFO;
|
||||
private int signatureLength = 4096;
|
||||
private boolean tailSelected = false;
|
||||
private String logfile = null;
|
||||
private String logfileSize = "10MB";
|
||||
private int logfileNumber = 5;
|
||||
private String sincedbFile = SINCEDB;
|
||||
private String configFile = null;
|
||||
private boolean debugWatcherSelected = false;
|
||||
|
||||
/**
|
||||
* @return the spoolSize
|
||||
*/
|
||||
public int getSpoolSize() {
|
||||
return spoolSize;
|
||||
}
|
||||
/**
|
||||
* @param spoolSize the spoolSize to set
|
||||
*/
|
||||
public void setSpoolSize(int spoolSize) {
|
||||
this.spoolSize = spoolSize;
|
||||
}
|
||||
/**
|
||||
* @return the idleTimeout
|
||||
*/
|
||||
public int getIdleTimeout() {
|
||||
return idleTimeout;
|
||||
}
|
||||
/**
|
||||
* @param idleTimeout the idleTimeout to set
|
||||
*/
|
||||
public void setIdleTimeout(int idleTimeout) {
|
||||
this.idleTimeout = idleTimeout;
|
||||
}
|
||||
/**
|
||||
* @return the logLevel
|
||||
*/
|
||||
public Level getLogLevel() {
|
||||
return logLevel;
|
||||
}
|
||||
/**
|
||||
* @param logLevel the logLevel to set
|
||||
*/
|
||||
public void setLogLevel(Level logLevel) {
|
||||
this.logLevel = logLevel;
|
||||
}
|
||||
/**
|
||||
* @return the signatureLength
|
||||
*/
|
||||
public int getSignatureLength() {
|
||||
return signatureLength;
|
||||
}
|
||||
/**
|
||||
* @param signatureLength the signatureLength to set
|
||||
*/
|
||||
public void setSignatureLength(int signatureLength) {
|
||||
this.signatureLength = signatureLength;
|
||||
}
|
||||
/**
|
||||
* @return the tailSelected
|
||||
*/
|
||||
public boolean isTailSelected() {
|
||||
return tailSelected;
|
||||
}
|
||||
/**
|
||||
* @param tailSelected the tailSelected to set
|
||||
*/
|
||||
public void setTailSelected(boolean tailSelected) {
|
||||
this.tailSelected = tailSelected;
|
||||
}
|
||||
/**
|
||||
* @return the logfile
|
||||
*/
|
||||
public String getLogfile() {
|
||||
return logfile;
|
||||
}
|
||||
/**
|
||||
* @param logfile the logfile to set
|
||||
*/
|
||||
public void setLogfile(String logfile) {
|
||||
this.logfile = logfile;
|
||||
}
|
||||
/**
|
||||
* @return the logfileSize
|
||||
*/
|
||||
public String getLogfileSize() {
|
||||
return logfileSize;
|
||||
}
|
||||
/**
|
||||
* @param logfileSize the logfileSize to set
|
||||
*/
|
||||
public void setLogfileSize(String logfileSize) {
|
||||
this.logfileSize = logfileSize;
|
||||
}
|
||||
/**
|
||||
* @return the logfileNumber
|
||||
*/
|
||||
public int getLogfileNumber() {
|
||||
return logfileNumber;
|
||||
}
|
||||
/**
|
||||
* @param logfileNumber the logfileNumber to set
|
||||
*/
|
||||
public void setLogfileNumber(int logfileNumber) {
|
||||
this.logfileNumber = logfileNumber;
|
||||
}
|
||||
/**
|
||||
* @return the sincedbFile
|
||||
*/
|
||||
public String getSincedbFile() {
|
||||
return sincedbFile;
|
||||
}
|
||||
/**
|
||||
* @param sincedbFile the sincedbFile to set
|
||||
*/
|
||||
public void setSincedbFile(String sincedbFile) {
|
||||
this.sincedbFile = sincedbFile;
|
||||
}
|
||||
/**
|
||||
* @return the configFile
|
||||
*/
|
||||
public String getConfigFile() {
|
||||
return configFile;
|
||||
}
|
||||
/**
|
||||
* @param configFile the configFile to set
|
||||
*/
|
||||
public void setConfigFile(String configFile) {
|
||||
this.configFile = configFile;
|
||||
}
|
||||
/**
|
||||
* @return the debugWatcherSelected
|
||||
*/
|
||||
public boolean isDebugWatcherSelected() {
|
||||
return debugWatcherSelected;
|
||||
}
|
||||
/**
|
||||
* @param debugWatcherSelected the debugWatcherSelected to set
|
||||
*/
|
||||
public void setDebugWatcherSelected(boolean debugWatcherSelected) {
|
||||
this.debugWatcherSelected = debugWatcherSelected;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
package info.fetter.logstashforwarder.config;
|
||||
|
||||
import static org.apache.log4j.Level.DEBUG;
|
||||
import static org.apache.log4j.Level.ERROR;
|
||||
import static org.apache.log4j.Level.TRACE;
|
||||
|
||||
import org.apache.commons.cli.CommandLine;
|
||||
import org.apache.commons.cli.CommandLineParser;
|
||||
import org.apache.commons.cli.GnuParser;
|
||||
import org.apache.commons.cli.HelpFormatter;
|
||||
import org.apache.commons.cli.Option;
|
||||
import org.apache.commons.cli.OptionBuilder;
|
||||
import org.apache.commons.cli.Options;
|
||||
import org.apache.commons.cli.ParseException;
|
||||
|
||||
public class ParametersManager {
|
||||
@SuppressWarnings("static-access")
|
||||
public static Parameters parseOptions(String[] args) {
|
||||
Options options = new Options();
|
||||
Option helpOption = new Option("help", "print this message");
|
||||
Option quietOption = new Option("quiet", "operate in quiet mode - only emit errors to log");
|
||||
Option debugOption = new Option("debug", "operate in debug mode");
|
||||
Option debugWatcherOption = new Option("debugwatcher", "operate watcher in debug mode");
|
||||
Option traceOption = new Option("trace", "operate in trace mode");
|
||||
Option tailOption = new Option("tail", "read new files from the end");
|
||||
|
||||
Option spoolSizeOption = OptionBuilder.withArgName("number of events")
|
||||
.hasArg()
|
||||
.withDescription("event count spool threshold - forces network flush")
|
||||
.create("spoolsize");
|
||||
Option idleTimeoutOption = OptionBuilder.withArgName("")
|
||||
.hasArg()
|
||||
.withDescription("time between file reads in seconds")
|
||||
.create("idletimeout");
|
||||
Option configOption = OptionBuilder.withArgName("config file")
|
||||
.hasArg()
|
||||
.isRequired()
|
||||
.withDescription("path to logstash-forwarder configuration file")
|
||||
.create("config");
|
||||
Option signatureLengthOption = OptionBuilder.withArgName("signature length")
|
||||
.hasArg()
|
||||
.withDescription("Maximum length of file signature")
|
||||
.create("signaturelength");
|
||||
Option logfileOption = OptionBuilder.withArgName("logfile name")
|
||||
.hasArg()
|
||||
.withDescription("Logfile name")
|
||||
.create("logfile");
|
||||
Option logfileSizeOption = OptionBuilder.withArgName("logfile size")
|
||||
.hasArg()
|
||||
.withDescription("Logfile size (default 10M)")
|
||||
.create("logfilesize");
|
||||
Option logfileNumberOption = OptionBuilder.withArgName("number of logfiles")
|
||||
.hasArg()
|
||||
.withDescription("Number of logfiles (default 5)")
|
||||
.create("logfilenumber");
|
||||
Option sincedbOption = OptionBuilder.withArgName("sincedb file")
|
||||
.hasArg()
|
||||
.withDescription("Sincedb file name")
|
||||
.create("sincedb");
|
||||
|
||||
options.addOption(helpOption)
|
||||
.addOption(idleTimeoutOption)
|
||||
.addOption(spoolSizeOption)
|
||||
.addOption(quietOption)
|
||||
.addOption(debugOption)
|
||||
.addOption(debugWatcherOption)
|
||||
.addOption(traceOption)
|
||||
.addOption(tailOption)
|
||||
.addOption(signatureLengthOption)
|
||||
.addOption(configOption)
|
||||
.addOption(logfileOption)
|
||||
.addOption(logfileNumberOption)
|
||||
.addOption(logfileSizeOption)
|
||||
.addOption(sincedbOption);
|
||||
|
||||
CommandLineParser parser = new GnuParser();
|
||||
Parameters parameters = new Parameters();
|
||||
try {
|
||||
CommandLine line = parser.parse(options, args);
|
||||
if(line.hasOption("spoolsize")) {
|
||||
parameters.setSpoolSize(Integer.parseInt(line.getOptionValue("spoolsize")));
|
||||
}
|
||||
if(line.hasOption("idletimeout")) {
|
||||
parameters.setIdleTimeout(Integer.parseInt(line.getOptionValue("idletimeout")));
|
||||
}
|
||||
if(line.hasOption("config")) {
|
||||
parameters.setConfigFile(line.getOptionValue("config"));
|
||||
}
|
||||
if(line.hasOption("signaturelength")) {
|
||||
parameters.setSignatureLength(Integer.parseInt(line.getOptionValue("signaturelength")));
|
||||
}
|
||||
if(line.hasOption("quiet")) {
|
||||
parameters.setLogLevel(ERROR);
|
||||
}
|
||||
if(line.hasOption("debug")) {
|
||||
parameters.setLogLevel(DEBUG);
|
||||
}
|
||||
if(line.hasOption("trace")) {
|
||||
parameters.setLogLevel(TRACE);
|
||||
}
|
||||
if(line.hasOption("debugwatcher")) {
|
||||
parameters.setDebugWatcherSelected(true);
|
||||
}
|
||||
if(line.hasOption("tail")) {
|
||||
parameters.setTailSelected(true);
|
||||
}
|
||||
if(line.hasOption("logfile")) {
|
||||
parameters.setLogfile(line.getOptionValue("logfile"));
|
||||
}
|
||||
if(line.hasOption("logfilesize")) {
|
||||
parameters.setLogfileSize(line.getOptionValue("logfilesize"));
|
||||
}
|
||||
if(line.hasOption("logfilenumber")) {
|
||||
parameters.setLogfileNumber(Integer.parseInt(line.getOptionValue("logfilenumber")));
|
||||
}
|
||||
if(line.hasOption("sincedb")) {
|
||||
parameters.setSincedbFile(line.getOptionValue("sincedb"));
|
||||
}
|
||||
} catch(ParseException e) {
|
||||
printHelp(options);
|
||||
System.exit(1);;
|
||||
} catch(NumberFormatException e) {
|
||||
System.err.println("Value must be an integer");
|
||||
printHelp(options);
|
||||
System.exit(2);;
|
||||
}
|
||||
return parameters;
|
||||
}
|
||||
|
||||
private static void printHelp(Options options) {
|
||||
HelpFormatter formatter = new HelpFormatter();
|
||||
formatter.printHelp("logstash-forwarder", options);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user