字符串太小,无法存储标准输出的进程

时间:2013-12-09 21:23:09

标签: c# string logging

我指示进程的标准输出/错误并将其存储在我记录到文件的字符串中。

我注意到并非所有的标准输出都存储在文本文件中,因此我必须达到字符串的大小限制。

是否有人知道有助于解决此问题的替代方案?

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);
            }
        }
    }
}

2 个答案:

答案 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;
            }
        }