ExpandStackTrace
/// <summary> /// 把一个异常的堆栈信息处理后返回一个字符串 /// 一个异常可能是另一个异常实例引发的,这里通过递归把所有的异常消息都处理并返回信息,最后形成一个包含异常足够多信息的字符串 /// </summary> /// <param name="ex">传输的异常</param> /// <returns>返回的字符串</returns> public static string ExpandStackTrace(Exception ex) { StringBuilder buffer = new StringBuilder(1024); while (ex != null) { if (buffer.Length > 0) { buffer.Insert(0, ex.StackTrace + "\nRe-Thrown (" + ex.Message + ")\n"); } else { buffer.Insert(0, ex.StackTrace + "\n"); } ex = ex.InnerException; } buffer.Replace(" in ", "\n\tin\n"); return buffer.ToString(); }
public static void AppendLog(string content) { HttpContext context = HttpContext.Current; string path = String.Concat(context.Server.MapPath("~/Log/"), DateTime.Now.ToString("yyyyMMdd"), ".log"); using (StreamWriter sw = new StreamWriter(path, true, Encoding.Default)) { sw.Write(DateTime.Now.ToString()); sw.Write('\t'); sw.Write(HttpUtils.RemoteIP); sw.Write('\t'); sw.Write(context.Request.UserAgent); sw.Write('\t'); sw.Write(context.Request.HttpMethod); sw.Write('\t'); sw.Write(context.Request.Url.PathAndQuery); sw.Write('\t'); sw.Write(content); string referer = context.Request.ServerVariables["HTTP_REFERER"]; if (referer != null) { sw.Write('\t'); sw.Write("referer:"); sw.Write(referer); } sw.WriteLine(); } }