错误日志[常用方法]

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        // 在应用程序启动时运行的代码

    }
   
    void Application_End(object sender, EventArgs e)
    {
        //  在应用程序关闭时运行的代码

    }
       
    void Application_Error(object sender, EventArgs e)
    {
        // 在出现未处理的错误时运行的代码
        Exception ex = Server.GetLastError().GetBaseException();
        string errorTime = "发生时间:" + DateTime.Now.ToString();
        string errorAddress = "发生异常页:" + Request.Url.ToString();
        string errorInfo = "异常信息:" + ex.Message;
        string errorSource = "错误源:" + ex.Source;
        string errorTrace = "堆栈信息:" + ex.StackTrace;
        Server.ClearError();
        System.IO.StreamWriter writer = null;
        try
        {
            string year = DateTime.Now.Year.ToString();
            string month = DateTime.Now.Month.ToString();
            string day = DateTime.Now.Day.ToString();
            string path = string.Empty;
            string filename = DateTime.Now.ToString("yyyyMMdd") + ".txt";
            path = Server.MapPath("~/Error/") + year + month + day;
            if (!System.IO.Directory.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path); //创建文件
            }
            System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename);
            writer = new System.IO.StreamWriter(file.FullName, true); //不创建文件,追加
            writer.WriteLine("用户IP:" + Request.UserHostAddress);
            writer.WriteLine(errorTime);
            writer.WriteLine(errorInfo);
            writer.WriteLine(errorSource);
            writer.WriteLine(errorTrace);
            writer.WriteLine("------------------------");

        }
        finally
        {
            if (writer != null)
                writer.Close();
        }
        Server.Transfer("~/Default.aspx"); //跳转到显示友好错误的页面

    }

    void Session_Start(object sender, EventArgs e)
    {
        // 在新会话启动时运行的代码

    }

    void Session_End(object sender, EventArgs e)
    {
        // 在会话结束时运行的代码。
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
        // 或 SQLServer,则不会引发该事件。

    }
      
</script>

posted @ 2010-05-25 10:07  smodi  阅读(177)  评论(0编辑  收藏  举报