尝试验证Logstash配置文件。从Windows命令行运行以下行时:
C:> C:\Logstash\bin\logstash -t -f C:\Logstash\config\my.config
然后我可以使用
检查结果 echo %errorlevel%
在语法错误的情况下返回1。现在,我想用C#编程地做到这一点,所以:
using System.Diagnostics;
var logstashProcess = Process.Start(@"C:\Logstash\bin\logstash", @"-t -f C:\Logstash\config\my.config");
logstashProcess.WaitForExit();
return logstashProcess.ExitCode == 0;
问题在于,即使配置文件完全混乱,它也始终返回true(退出代码为零)。
我的猜测:由于C:\Logstash\bin\logstash
是一个shell脚本,我得到的零是成功运行的shell本身-而不是Logstash进程(该进程在该脚本中使用jruby执行)。关于如何获得实际回报值的任何想法吗?批处理文件可以工作吗? (我现在不想在聚会上添加额外的脚本)