【发布时间】:2021-03-02 12:23:38
【问题描述】:
我正在尝试按照this solution here 将我的控制台输出也镜像到日志文件,但是,我注意到文件的输出被切断,因此完整的控制台输出没有完全输出到文件中。这是为什么? TextWriter 是否有一定的行数限制?
private TextWriter txtMirror = new StreamWriter("mirror.txt");
// Write text
private void Log(string strText)
{
Console.WriteLine(strText);
txtMirror.WriteLine(strText);
}
附言我使用这个解决方案的原因是因为我在函数中有Console.Writeline 以及我在main() 中调用。所以如果我改用this solution,我将不得不在我有Console.WriteLine()的任何地方打开一个using语句...这似乎是多余的
【问题讨论】:
-
您能稍微解释一下这个问题吗?
cut off表示文本内容没有完全写入文件?您是否考虑过使用 log4net、NLog 等日志框架将日志写入文本文件? -
您是否刷新/关闭/处置您的 TextWriter?
-
@ChetanRanpariya 例如,如果我有 100 条语句/行打印到控制台,当我检查日志文件时,我只看到大约 60 条语句/行。我确实考虑过 log4net,但现在我正在研究一个简单的控制台 POC,所以我宁愿不包括第 3 方库/包:)
-
@KlausGütter 你说得对,我必须在每个
Log("...") txtMirror.Flush(); txtMirror.Close();之后添加这两行。但是using似乎以更优雅的方式处理了这个问题:) -
您也可以将其添加为 Log 方法的最后一行
标签: c#