/// <summary>
        /// 错误日志的写入
        /// </summary>
        /// <param name="ETMID"></param>
        /// <param name="exMessage"></param>
        public static void SvaeErrorlog(string ID, string exMessage)
        {
            FileStream fs=null;
            StreamWriter sw=null;
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                fs = new FileStream(path+"ErrorHis.txt", FileMode.Append);
                //实例化一个StreamWriter-->与fs相关联
                sw = new StreamWriter(fs);
                //开始写入
                sw.Write("id:" + ID + "\r\n" + "时间:" + DateTime.Now + "\r\n" + "错误信息:" + exMessage + "\r\n");
                //清空缓冲区
                sw.Flush();
            }
            catch
            {            }
            finally
            {
                //关闭流
                sw.Close();
                fs.Close();
            }
        }
我想按时间降序写入、最新的错误放在最前面、这种写入不知道有没办法降序写入? 求解?

解决方案 »

  1.   

    写个内存池,适合多线程。简单的是用Dictionary,用Time做key,积攒到5M或者一定数量之后写入文件(或进程结束时写入文件)
      

  2.   

    每次写入文件都做单独的文件存储,也就是log1 log2 log3 log4.....每次写入都是独立的一个文件,这样单个文件内部是时间排序的,每个文件也是经过系统时间排序的。