我有一个编写器,将进程流中的数据写入日志文件。当我用Console.WriteLine()
显示输出时,结果如下所示:
SW DATA = Sep 23, 2016 9:40:37 AM hudson.remoting.jnlp.Main$CuiListener status
SW DATA = INFO: Trying protocol: JNLP3-connect
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status
SW DATA = INFO: Server didn't accept the handshake: Unknown protocol:Protocol:JNLP3-connect
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status
SW DATA = INFO: Connecting to Machine:51136
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status
SW DATA = INFO: Trying protocol: JNLP2-connect
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status
SW DATA = INFO: Connected
但是当我打开Textfile时,它看起来像是:
INFO: Connected
:38 AM hudson.remoting.jnlp.Main$CuiListener status
LP3-connect
6231dd with ID
ad is recommended.
我的代码是:
static void ShowOutput(string data)
{
if (data != null)
{
FileStream fileStream = new FileStream(@"c:\temp\LogFile.txt", FileMode.OpenOrCreate, FileAccess.Write);
Console.WriteLine("SW DATA = " + data);
using (StreamWriter w = new StreamWriter(fileStream))
{
w.WriteLine(data);
w.Flush();
}
fileStream.Close();
}
}
看起来作者只写了每一行的结尾。
数据来自与此类似的控制台流程:
http://www.codeproject.com/Articles/4665/Launching-a-process-and-displaying-its-standard-ou
我的问题是:
我该如何防止这种情况?
答案 0 :(得分:4)
看起来作者只写了每一行的结尾。
这是因为您每次都重新打开文件,覆盖以前的内容。您需要在调用ruby 2.3.0p0
之间保持文件处于打开状态,或者以ShowOutput
模式打开文件。
文件中的混合内容是因为它只会覆盖文件的开头(不会截断它),所以如果你写的日志条目比前面的条目短,那么前一个文本的结尾仍然存在