【问题标题】:Duplicated line output in log file日志文件中的重复行输出
【发布时间】:2021-09-13 05:45:42
【问题描述】:

我正在将 cmd 输出结果写入日志文件,这样做时会得到重复的结果。所以这样做是从标准输出中抓取一行,如果该字符串至少包含该行的文本,它将在日志文件中打印它是成功的。

但是,它还包括我不想要的前 4 个实例。我可以看到这个问题,因为 else 语句意味着它将显示“失败”。

我的问题是,我如何只希望程序只读取特定的行?

这是我的代码:

 start = DateTime.Now.ToString("HH:mm:ss tt");

            var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "cmd.exe",
                    Arguments = "/c command here",
                    UseShellExecute = false,
                    RedirectStandardOutput = true
                }
            };

            process.Start();

            while (!process.StandardOutput.EndOfStream)
            {
                string line = process.StandardOutput.ReadLine();
                Console.WriteLine(line);

                if (line.Contains("Output goes here."))
                {
                    finish = DateTime.Now.ToString("HH:mm:ss tt");
                    PrintRow("Task 1", start, finish, "SUCCESS");
                    PrintLine();
                }

                else
                {
                    finish = DateTime.Now.ToString("HH:mm:ss tt");
                    PrintRow("Task 1", start, finish, "FAILURE");
                    PrintLine();
                }

                process.WaitForExit();

我得到的日志文件结果:

|任务 1 |下午 15:23:25 |下午 15:23:30 |失败 |

|任务 1 |下午 15:23:25 |下午 15:23:31 |失败 |

|任务 1 |下午 15:23:25 |下午 15 点 23 分 32 秒 |失败 |

|任务 1 |下午 15:23:25 |下午 15 点 23 分 32 秒 |失败 |

|任务 1 |下午 15:23:25 |下午 15 点 23 分 32 秒 |成功 |

【问题讨论】:

    标签: c# .net logging cmd output


    【解决方案1】:

    解决了这个问题

    string line = process.StandardOutput.ReadLine(); 更改为string line = process.StandardOutput.ReadToEnd();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2015-11-21
      • 2020-02-11
      相关资源
      最近更新 更多