如何计算和打印日志文件中最后一列中的失败和通过测试的数量
boolean globalRet = true;
for (boolean anArrRet : arrRet) {
if (!anArrRet) {
globalRet = false;
break;
}
}
if (globalRet) {
logLine += cnd.getLineLastAll() + "PASS,NA\n";
} else {
logLine += cnd.getLineLastAll() + "FAIL,";
for (int i = 0; i < arrRet.length; i++) {
if (!arrRet[i]) {
logLine += arrCondition[i] + "&";
}
}
logLine += "\n";
}
我正在使用的数据文件看起来像
CO2, Conditions
2.0, CEC_P=NA & CPH_P=NA & C_P=NA & H_P=NA
5.5, CNA=NA
我的日志文件看起来像在第二行中看到的那样,条件2已通过且2失败,但是我不将已通过的条件打印到日志文件中
CO2, Result, Reason
2.0 FAIL, CEC_P=NA & CPH_P=NA
5.5 PASS, NA
因此,失败的原因可能不止一个原因,而原因又由&
分开现在我要在日志文件中获取的内容应该是这样
CO2, Result, Reason Passed, Failed
2.0 FAIL, CEC_P=NA & CPH_P=NA 2, 2
5.5 PASS, NA 1, 0
答案 0 :(得分:0)
如果您使用的是Unix系统,则以下命令可以满足您的需要(在Java代码之外,并假设PASS / FAIL字符串位于日志文件的最后一列):
awk '{print $NF}' your_log_file | sort | uniq -c
示例输出:
2 FAIL
5 PASS
或者,下面的简单Java代码可以逐行读取文件,并计算每行中“ FAIL”或“ PASS”字符串的出现次数并打印结果:
BufferedReader reader;
int fail = 0;
int pass = 0;
try {
reader = new BufferedReader(new FileReader(
"path\\to\\your\\log_file"));
String line = reader.readLine();
while (line != null) {
if (line.contains("FAIL")) fail++;
if (line.contains("PASS")) pass++;
line = reader.readLine();
}
reader.close();
} catch (IOException e) {e.printStackTrace();}
System.out.println("Number of PASS in file : " + pass);
System.out.println("Number of FAIL in file : " + fail);