Search code examples
javapowershellprocessbuilderfilebeat

Start filebeat using a Java code?


I'm using filebeat to read some log files and I need to start filebeat using a Java program. And the filebeat commands are executed using the Windows PowerShell. I used the following code but it didn't work.

try {
    ProcessBuilder b1 = new ProcessBuilder("powershell.exe", "/c", "cd \"C:\\Program Files\\Filebeat\" && ./filebeat -e -c filebeat.yml -d \"publish\"\\");
    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) {
}

Solution

  • The below code worked.

            ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Filebeat\\filebeat.exe", "-c", "C:\\Program Files\\Filebeat\\filebeat.yml", "-e");
            pb.redirectErrorStream(true);
            Process p = pb.start();
    
            BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
    
            String line;
            while ((line = bri.readLine()) != null) {
               System.out.println(line);
            }
            p.waitFor();