【问题标题】:Run Logstash in Java Program在 Java 程序中运行 Logstash
【发布时间】:2016-05-31 23:19:31
【问题描述】:

我在 ElasticSearch 中创建了索引和字段。 我可以使用以下命令成功运行 Logstash 配置文件,将 MySQL 数据库表中的数据添加到 ElasticSearch 中:

bin/logstash -f [PATH TO LOGSTASH CONFIG FILE] -v

我需要从我的 Java 源代码运行此命令。如何从 Java 代码运行这个 logstash 配置文件?

【问题讨论】:

  • 你是想从java程序运行这个命令还是你想从java程序运行logstash实例?

标签: java elasticsearch logstash


【解决方案1】:
import java.io.*;
class UserTest{
        public static void main(String[] args)
        {
                try
                {
                        String s = "";
                        String[] cmd = new String[]{"/bin/sh", "./logstash","-f","loggingConfFile.conf"};
                        Process processes = Runtime.getRuntime().exec(cmd);
                        BufferedReader stdInput = new BufferedReader(new InputStreamReader(processes.getInputStream()));
                        while ((s = stdInput.readLine()) != null)
                        {
                                System.out.println(s);
                        }
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
        }
}

【讨论】:

    【解决方案2】:

    试试这个代码。它有效。

            try {
            ProcessBuilder b1 = new ProcessBuilder("cmd.exe", "/c", "cd \"C:\\elk\\logstash-5.1.2\\bin\" && logstash -f first-pipeline.conf --config.reload.automatic");
            b1.redirectErrorStream(true);
            Process p1 = b1.start();
            BufferedReader r1 = new BufferedReader(new InputStreamReader(p1.getInputStream()));
            String line1;
            while (true) {
                line1 = r1.readLine();
                if (line1 == null) { break; }
                System.out.println(line1);
            }
    
            }catch(Exception e) {
    
            }
    

    【讨论】:

    • 添加对为什么您的代码有效的解释,将提高您的回答质量!
    【解决方案3】:

    试试这个,只需对上面提到的代码进行一些更改,就可以正常工作:

    试试{

                ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "logstash -f --Your file Path-- ");
                builder.redirectErrorStream(true);
                Process p = builder.start();
                BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line1;
                while (true) {
                    line1 = r.readLine();
                    if (line1 == null) { break; }
                    System.out.println(line1);
                }
    
                }catch(Exception e) {
                        e.printStackTrace();
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      相关资源
      最近更新 更多