mirror of
https://github.com/Febbweiss/logstash-forwarder-java.git
synced 2026-03-05 06:35:44 +00:00
Implementation of config file loading.
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
package info.fetter.logstashforwarder.config;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.builder.ToStringBuilder;
|
||||||
|
|
||||||
|
public class Configuration {
|
||||||
|
private NetworkSection network;
|
||||||
|
private List<FilesSection> files;
|
||||||
|
/**
|
||||||
|
* @return the network
|
||||||
|
*/
|
||||||
|
public NetworkSection getNetwork() {
|
||||||
|
return network;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param network the network to set
|
||||||
|
*/
|
||||||
|
public void setNetwork(NetworkSection network) {
|
||||||
|
this.network = network;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return the files
|
||||||
|
*/
|
||||||
|
public List<FilesSection> getFiles() {
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param files the files to set
|
||||||
|
*/
|
||||||
|
public void setFiles(List<FilesSection> files) {
|
||||||
|
this.files = files;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this).
|
||||||
|
append("network", network).
|
||||||
|
append("files", files).
|
||||||
|
toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package info.fetter.logstashforwarder.config;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
|
import com.fasterxml.jackson.core.JsonParser;
|
||||||
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
public class ConfigurationManager {
|
||||||
|
private File configFile;
|
||||||
|
private Configuration config;
|
||||||
|
private ObjectMapper mapper;
|
||||||
|
|
||||||
|
public ConfigurationManager(String configFilePath) {
|
||||||
|
this(new File(configFilePath));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationManager(File file) {
|
||||||
|
configFile = file;
|
||||||
|
mapper = new ObjectMapper();
|
||||||
|
mapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
|
||||||
|
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readConfiguration() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
config = mapper.readValue(configFile, Configuration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeConfiguration() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the config
|
||||||
|
*/
|
||||||
|
public Configuration getConfig() {
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package info.fetter.logstashforwarder.config;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.builder.ToStringBuilder;
|
||||||
|
|
||||||
|
public class FilesSection {
|
||||||
|
private List<String> paths;
|
||||||
|
private Map<String,String> fields;
|
||||||
|
/**
|
||||||
|
* @return the paths
|
||||||
|
*/
|
||||||
|
public List<String> getPaths() {
|
||||||
|
return paths;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param paths the paths to set
|
||||||
|
*/
|
||||||
|
public void setPaths(List<String> paths) {
|
||||||
|
this.paths = paths;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return the fields
|
||||||
|
*/
|
||||||
|
public Map<String, String> getFields() {
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param fields the fields to set
|
||||||
|
*/
|
||||||
|
public void setFields(Map<String, String> fields) {
|
||||||
|
this.fields = fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this).
|
||||||
|
append("paths", paths).
|
||||||
|
append("fields", fields).
|
||||||
|
toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
package info.fetter.logstashforwarder.config;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.builder.ToStringBuilder;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class NetworkSection {
|
||||||
|
private List<String> servers;
|
||||||
|
@JsonProperty("ssl certificate")
|
||||||
|
private String sslCertificate;
|
||||||
|
@JsonProperty("ssl ca")
|
||||||
|
private String sslCA;
|
||||||
|
@JsonProperty("ssl key")
|
||||||
|
private String sslKey;
|
||||||
|
private int timeout;
|
||||||
|
/**
|
||||||
|
* @return the servers
|
||||||
|
*/
|
||||||
|
public List<String> getServers() {
|
||||||
|
return servers;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param servers the servers to set
|
||||||
|
*/
|
||||||
|
public void setServers(List<String> servers) {
|
||||||
|
this.servers = servers;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return the sslCertificate
|
||||||
|
*/
|
||||||
|
public String getSslCertificate() {
|
||||||
|
return sslCertificate;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param sslCertificate the sslCertificate to set
|
||||||
|
*/
|
||||||
|
public void setSslCertificate(String sslCertificate) {
|
||||||
|
this.sslCertificate = sslCertificate;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return the sslCA
|
||||||
|
*/
|
||||||
|
public String getSslCA() {
|
||||||
|
return sslCA;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param sslCA the sslCA to set
|
||||||
|
*/
|
||||||
|
public void setSslCA(String sslCA) {
|
||||||
|
this.sslCA = sslCA;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return the timeout
|
||||||
|
*/
|
||||||
|
public int getTimeout() {
|
||||||
|
return timeout;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param timeout the timeout to set
|
||||||
|
*/
|
||||||
|
public void setTimeout(int timeout) {
|
||||||
|
this.timeout = timeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the sslKey
|
||||||
|
*/
|
||||||
|
public String getSslKey() {
|
||||||
|
return sslKey;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param sslKey the sslKey to set
|
||||||
|
*/
|
||||||
|
public void setSslKey(String sslKey) {
|
||||||
|
this.sslKey = sslKey;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this).
|
||||||
|
append("servers", servers).
|
||||||
|
append("sslCertificate", sslCertificate).
|
||||||
|
append("sslCA", sslCA).
|
||||||
|
append("timeout", timeout).
|
||||||
|
toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package info.fetter.logstashforwarder.config;
|
||||||
|
|
||||||
|
import static org.apache.log4j.Level.DEBUG;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.apache.log4j.BasicConfigurator;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.apache.log4j.spi.RootLogger;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||||
|
|
||||||
|
public class ConfigurationManagerTest {
|
||||||
|
Logger logger = Logger.getLogger(ConfigurationManagerTest.class);
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUpBeforeClass() throws Exception {
|
||||||
|
BasicConfigurator.configure();
|
||||||
|
RootLogger.getRootLogger().setLevel(DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void tearDownAfterClass() throws Exception {
|
||||||
|
BasicConfigurator.resetConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadConfig1() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
ConfigurationManager manager = new ConfigurationManager(new File(ConfigurationManagerTest.class.getClassLoader().getResource("config1.json").getFile()));
|
||||||
|
manager.readConfiguration();
|
||||||
|
logger.debug(manager.getConfig().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/test/resources/config1.json
Normal file
52
src/test/resources/config1.json
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
// The network section covers network configuration :)
|
||||||
|
"network": {
|
||||||
|
// A list of downstream servers listening for our messages.
|
||||||
|
// logstash-forwarder will pick one at random and only switch if
|
||||||
|
// the selected one appears to be dead or unresponsive
|
||||||
|
"servers": [ "localhost:5043" ],
|
||||||
|
|
||||||
|
// The path to your client ssl certificate (optional)
|
||||||
|
"ssl certificate": "./logstash-forwarder.crt",
|
||||||
|
// The path to your client ssl key (optional)
|
||||||
|
"ssl key": "./logstash-forwarder.key",
|
||||||
|
|
||||||
|
// The path to your trusted ssl CA file. This is used
|
||||||
|
// to authenticate your downstream server.
|
||||||
|
"ssl ca": "./logstash-forwarder.crt",
|
||||||
|
|
||||||
|
// Network timeout in seconds. This is most important for
|
||||||
|
// logstash-forwarder determining whether to stop waiting for an
|
||||||
|
// acknowledgement from the downstream server. If an timeout is reached,
|
||||||
|
// logstash-forwarder will assume the connection or server is bad and
|
||||||
|
// will connect to a server chosen at random from the servers list.
|
||||||
|
"timeout": 15
|
||||||
|
},
|
||||||
|
|
||||||
|
// The list of files configurations
|
||||||
|
"files": [
|
||||||
|
// An array of hashes. Each hash tells what paths to watch and
|
||||||
|
// what fields to annotate on events from those paths.
|
||||||
|
{
|
||||||
|
"paths": [
|
||||||
|
// single paths are fine
|
||||||
|
"/var/log/messages",
|
||||||
|
// globs are fine too, they will be periodically evaluated
|
||||||
|
// to see if any new files match the wildcard.
|
||||||
|
"/var/log/*.log"
|
||||||
|
],
|
||||||
|
|
||||||
|
// A dictionary of fields to annotate on each event.
|
||||||
|
"fields": { "type": "syslog" }
|
||||||
|
}, {
|
||||||
|
// A path of "-" means stdin.
|
||||||
|
"paths": [ "-" ],
|
||||||
|
"fields": { "type": "stdin" }
|
||||||
|
}, {
|
||||||
|
"paths": [
|
||||||
|
"/var/log/apache/httpd-*.log"
|
||||||
|
],
|
||||||
|
"fields": { "type": "apache" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user