在编写代码中我们会经常使用到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亿企业网站管理系统。