前提
系统中的错误日志是一个非常重要的部分,能很好的帮助开发人员了解系统的问题,及时改进系统,提高软件的使用效率。而且这一部分之前师傅也曾提到过,可是千言万语都抵不过一个“懒”字,这次更是项目必须用到了,才真正想到要去实现一下。
我这次做的这个功能是为了给用户看到,目的利用这个日志提示导入Excel模板中有多少内容存在问题,方便用户修改。为了用户方便,所有的错误信息提示,由用户选择保存路径,默认路径桌面。
代码部分
<span style="white-space:pre"> </span>#region 自动生成错误txt+贾文静+2016-8-13 17:56:11
public void WriteLog(string cdmstring)
{
try
{
//该错误日志以日期命名
string filename = DateTime.Now.ToString("yyyy-MM-dd") + "错误信息";
Response.Clear();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
//下载文件为txt格式
Response.AppendHeader("content-disposition", "attachment;filename=" + filename + ".txt;");
//定义sbLog的目的是为了拼接错误日志的显示格式
StringBuilder sbLog = new StringBuilder();
sbLog.Append("=====================================");
sbLog.Append("\r\n");
sbLog.Append("添加日期为:");
sbLog.AppendFormat("{0}", DateTime.Now.ToString());
sbLog.Append("\r\n");
sbLog.Append("日志内容为:");
//cdmstring是需要提供错误信息的字符串
sbLog.AppendFormat("{0}", cdmstring);
sbLog.Append("\r\n");
sbLog.Append("=====================================");
Response.Write(sbLog.ToString());
Response.Flush();
Response.End();
}
catch (Exception ex)
{
ex.ToString();
}
finally
{
//无论此过程是否成功,都刷新用户界面
Response.Redirect(Request.Url.ToString());
}
}
#endregion
这个过程一开始使用的弹出框,后来改用此方法原因还是弹出框不方便,一个确定按钮,需要提示用户的信息就消失了。不变用户的修改,但是这个过程发现一个问题就换行的问题,因为错误的信息采用StringBuilder拼接,在弹出框的时候换行符写为sbErrorCash.Append("@\r\n")而改成错误日志后换行符就变成sbErrorCash.Append("\r\n")。原因是弹出框采用的JavaScript,而日志则是使用C#语言。语言的不同,格式不同,因为都是在Asp.net中编写也没有注意格式问题,后面还是调了好久。想说一下虽然语言基本上相似,还是需要多多注意一下细节,多一点认真啊。
【总结】
说错误日志这个东西吧,能做大做小,我就这就是非常小的功能,仅仅用户小小的需求吧。今天接触一个新的框架,也是关于企业的错误日志收集的系统——es+flume+kafka完成企业日志追踪,里面更是涉及到一些我目前还没有接触到的技术,看到些东西,这个小东西也就练练手吧,同样是看到这些东西还是革命尚未成功,同志仍需努力啊!