25yicms利用ASP.NET(C#)+MSSQL技术全力打造功能最强大的营销型企业网站管理系统,企业做网站系统,做网站软件,提供div+css企业网站模板。
阅读内容

C#当中对错误记录代码(写入记事本中)


时间:2010/05/19   来源:25亿

在编写代码中我们会经常使用到try{}catch{System.Exception ex),对于一般的程序员编程的时候,一般没有对catch作任何处理,或者直接抛出异常。如果我们的程序比较复杂

和庞大,这时我们一定要学会对错误机制进行处理并记录。

以下代码是C#当中对错误记录代码(写入记事本中)。

try
{
}
catch(System.Exception ex)
{
string fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".txt";
Uitls.ErrorLog("错误位置 130 行\r" +  ex.ToString(), fileName, "/ErrorLog/");
}
//上述代码在catch中执行,并写入到记事本(txt)文件当中。

Uitls类代码

using System;
using System.IO;
using System.Text;
using System.Web;
    public class Uitls
    {
        public static void ErrorLog(string errorMsg)
        {
            ErrorLog(errorMsg, DateTime.Now.ToString("yyyyMMddhhmmss") + new Random().Next(0x3e8, 0x270f) + ".txt",

HttpContext.Current.Request.ApplicationPath + "/ErrorLog/");
        }

        public static void ErrorLog(string errorMsg, string fileName, string savePath)
        {
            string str = "未获取到来源页面";
            HttpContext current = HttpContext.Current;
            if (HttpContext.Current.Request.ServerVariables["HTTP_REFERER"] != null)
            {
                str = current.Request.ServerVariables["HTTP_REFERER"].ToString();
            }
            string path = current.Server.MapPath(savePath);
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            StreamWriter writer = new StreamWriter(path + fileName, true, Encoding.UTF8);
            StringBuilder builder = new StringBuilder();
            builder.Append("日志时间:\t\t\t" + DateTime.Now.ToString("yyyy-MM-dd hh:mm ss"));
            builder.Append("\r\n\r\n");
            builder.Append("请求来源:\t\t\t" + str);
            builder.Append("\r\n\r\n");
            builder.Append("IP地址:\t\t\t" + GetClientIP());
            builder.Append("\r\n\r\n");
            builder.Append("错误页面:\t\t\t" + current.Request.Url.ToString());
            builder.Append("\r\n\r\n");
            builder.Append("日志内容:");
            builder.Append("\r\n\r\n");
            builder.Append(errorMsg);
            writer.Write(builder);
            writer.Flush();
            writer.Close();
        }

        public static string GetClientIP()
        {
            HttpContext current = HttpContext.Current;
            string str = "";
            if (current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
            {
                return current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            if ((str == "") && (current.Request.ServerVariables["REMOTE_ADDR"] != null))
            {
                return current.Request.ServerVariables["REMOTE_ADDR"].ToString();
            }
            return current.Request.UserHostAddress;
        }
    }

这样就算程序最复杂有庞大,出现问题,我们可以直接查找当天的错误文件。
C#当中对错误记录代码(写入记事本中)写到这里,欢迎大家一起研究讨论25亿企业网站管理系统。

点击次数:       打印此页  关闭