namespace Tiny_Dust.Lib.Base
{
/// <summary>
///错误保存,LogFile将错误信息和出错时间保存在有访问权限的文件中(默认:D:\WebException)
///可以通过ChangeErrSaveDir 改变
///或者用LogWindowEvent保存错误信息到Windows事件中(要求权限)
/// </summary>
public class ExceptionSave: System.Exception
{
static System.Text.Encoding gb = System.Text.Encoding.GetEncoding("GB2312");
static string ErrDir = ConstBase.ErrDir ; /// <summary>
/// 改变文件保存路径()
/// </summary>
/// <param name="sNewPath"></param>
static void ChangeErrSaveDir(string sNewPath)
{
///目录必须存在
if(System.IO.File.Exists(sNewPath))
ErrDir = sNewPath;
}
/// <summary>
/// 保存错误信息到Windows事件中(要求权限)
/// </summary>
/// <param name="message">要保存的错误信息</param>
public static  void LogWindowEvent(string message)
{
try
{
if (!EventLog.SourceExists("Tiny_Dust"))
{
EventLog.CreateEventSource("Tiny_Dust", "Application");
}
EventLog.WriteEntry("Tiny_Dust", message, EventLogEntryType.Error);
}
catch
{

}
} /// <summary>
/// 保存错误信息
/// </summary>
/// <param name="message"></param>
public static void LogFile(string message)
{
try
{
//style: time \t errMessage \n
string ErrFile = System.IO.Path.Combine(ErrDir,DateTime.Now.ToString("MM_dd__")+"err.txt");
string sErr = DateTime.Now.ToString() +"\t"+message+"\r\n";
byte[] buff = gb.GetBytes(sErr);
FileStream fs = File.Open(ErrFile,FileMode.Append,FileAccess.Write,FileShare.None );
fs.Write (buff,0,buff.Length );
fs.Close (); }
catch(Exception ex)
{
Console.Write(ex.Message);
}
}
}
}

解决方案 »

  1.   

    StreamWriter aa = new StreamWriter("c:\\hello.txt",true);
    aa.WriteLine("asfda"); //here is your messsage
      

  2.   

    StreamWriter aa = new StreamWriter("c:\\hello.txt",true);
    aa.WriteLine("asfda"); //here is your messsage
    aa.Close();
      

  3.   

    TO:welcomgoodies
    我要求所有的例外都保存在同一个文件里,不想把每一个例外保存在不同的文件里,你上面好像保存在不同的文本文件里?
    你可以通过错误号不同而修改文件名
    public static void LogFile(string message,int ErrNumber)
    {
    try
    {
    //style: time \t errMessage \n
    string ErrFile = System.IO.Path.Combine(ErrDir,ErrNumber.ToString()+"err.txt");
    string sErr = DateTime.Now.ToString() +"\t"+message+"\r\n";
    byte[] buff = gb.GetBytes(sErr);
    FileStream fs = File.Open(ErrFile,FileMode.Append,FileAccess.Write,FileShare.None );
    fs.Write (buff,0,buff.Length );
    fs.Close (); }
    catch(Exception ex)
    {
    Console.Write(ex.Message);
    }
    }//调用
    try
    {
    command.CommandText = sSql;
    command.CommandType= CommandType.Text;
    command.ExecuteNonQuery();
    }
    catch(SqlException ex )
    {
    Tiny_Dust.Lib.Base.ExceptionSave.LogFile(ex.Message,ex.Number )
    return false;
    }
      

  4.   

    又看错了,
    以为你要保存到不同的文件中去呢!!呵呵TO:welcomgoodies
    我要求所有的例外都保存在同一个文件里,不想把每一个例外保存在不同的文件里,你上面好像保存在不同的文本文件里?/// <summary>
    /// 保存错误信息
    /// </summary>
    /// <param name="message"></param>
    public static void LogFile(string message)
    {
    try
    {
    const string LogFileName ="Error.txt"
    //style: time \t errMessage \n
    // string ErrFile = System.IO.Path.Combine(ErrDir,DateTime.Now.ToString("MM_dd__")+"err.txt");
    string sErr = DateTime.Now.ToString() +"\t"+message+"\r\n";
    byte[] buff = gb.GetBytes(sErr);
    FileStream fs = File.Open(LogFileName,FileMode.Append,FileAccess.Write,FileShare.None );
    fs.Write (buff,0,buff.Length );
    fs.Close (); }
    catch(Exception ex)
    {
    Console.Write(ex.Message);
    }
    }