我指示进程的标准输出/错误并将其存储在我记录到文件的字符串中。
我注意到并非所有的标准输出都存储在文本文件中,因此我必须达到字符串的大小限制。
是否有人知道有助于解决此问题的替代方案?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Logging
{
class Logger
{
private FileStream file = null;
private StreamWriter writer = null;
public Logger(string _path)
{
if (!File.Exists(_path)) File.Create(_path).Dispose();
file = new FileStream(_path, FileMode.Append, FileAccess.Write, FileShare.Write);
writer = new StreamWriter(file);
}
public void Log(string _text)
{
Console.WriteLine(_text);
using (file)
{
writer.WriteLine("[" + DateTime.Now + "] : " + _text);
}
}
}
}
答案 0 :(得分:5)
using (file)
你刚刚丢弃了你的文件。你不能再写信了。
答案 1 :(得分:1)
string
类型的限制为2GB。
您对文件创建和处理的处理会给您带来一些困难。
尝试使用更清晰的日志代码:
const string log = @"logfile path";
public void Log(string _text)
{
try
{
using (TextWriter tw = new StreamWriter(_path, true))
{
tw.WriteLine("[" + DateTime.Now + "] : " + _text);
}
}
catch (Exception)
{
throw;
}
}