日志的记录

LogHelper.rar下载

最近在做系统的优化,但优化之前先得知道哪些地方有问题,耗费时间比较长,我们系统用服务层用的是WCF,现在对系统的某一个操作记录时间(包括客户端与服务器端,是在本机测试的),想法是写一个公共项目,客户端与服务器端都去引用它,然后记录时间(因为是在本机测试,所以客户端与服务器端时间是一致的),我想让客户端与服务器端所记录的时间都记录到一个文件中,这样我运行起来完之后,日志也生成完了。想法是这样的,代码如下:

View Code
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 
 7 namespace 简单工厂模式
 8 {
 9     /// <summary>
10     /// 主要用于记录每个步骤所需的时间的。
11     /// </summary>
12     class LogHelper
13     {        
14         //当你希望向一个新的文本文件内写入时,请调用WriteToLog(string msg, false),之后向同一个文件内写入时,不需要再指定路径。
15 
16         /// <summary>
17         /// 要写入的文件名,若首次进入服务器时,请先将此Name设空。
18         /// </summary>
19         public static string FileName = "";
20 
21         /// <summary>
22         /// 设置要写入的文件名
23         /// </summary>
24         private static void SetWriteFileName()
25         {
26             string name = System.DateTime.Now.ToString() + ".txt";
27             name = name.Replace('/''_').Replace(':''_').Replace(' ''_');
28             //写入的文件(包含目录)
29             string logFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Tp\\linjs_Log\\" + name);
30             FileName = logFile;
31         }
32 
33         /// <summary>
34         /// 写入文件
35         /// </summary>
36         /// <param name="msg">要写入的内容</param>
37         /// <param name="isNewFile">是否要写入新的文件</param>
38         public static void WriteToLog(string msg, bool isNewFile)
39         {
40             if (isNewFile) SetWriteFileName();
41             WriteToPublicInfo();
42             WriteToLog(msg);
43         }
44 
45         /// <summary>
46         /// 写入文件
47         /// </summary>
48         /// <param name="msg">要写入的内容</param>
49         public static void WriteToLog(string msg)
50         {
51             if (string.IsNullOrEmpty(msg)) return;
52             if (string.IsNullOrEmpty(FileName))
53             {
54                 //如果为空,则从NameInfo.txt中读取。
55                 string str;
56                 string logFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Tp\\linjs_Log\\NameInfo.txt");
57                 StreamReader sr = new StreamReader(logFile, false);
58                 str = sr.ReadLine().ToString();
59                 sr.Close();
60                 if (!string.IsNullOrEmpty(str))
61                 {
62                     FileName = str;
63                 }
64                 else
65                 {
66                     SetWriteFileName();
67                 }
68             }
69 
70             StreamWriter sw = new StreamWriter(FileName, true);
71             string text = msg + "" + System.DateTime.Now.ToString() + "";
72             sw.WriteLine(text);
73             sw.Close();
74         }
75 
76         static void WriteToPublicInfo()
77         {
78             string logFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Tp\\linjs_Log\\NameInfo.txt");
79             StreamWriter sw = new StreamWriter(logFile, false);
80             sw.WriteLine(FileName);
81             sw.Close();
82         }       
83     }
84 }

客户端调用:
就拿导入数据来说,它有以下几个步骤
1. 客户端从Excel中读取数据
2. 客户端处理读到的数据
3. 客户羰验证读到的数据是否合法
4. 服务器端向表中插入数据
5. 服务器端处理数据
6. 客户端刷新数据

你可以这样调用 

LogHelper.WriteToLog("1. 客户端从Excel中读取数据 开始",true);//此处的true 表示创建一个新的文件。
LogHelper.WriteToLog("1. 客户端从Excel中读取数据 结束");
LogHelper.WriteToLog("2. 客户端处理读到的数据 开始");
LogHelper.WriteToLog("2. 客户端处理读到的数据 结束");
LogHelper.WriteToLog("3. 客户羰验证读到的数据是否合法 开始");
LogHelper.WriteToLog("3. 客户羰验证读到的数据是否合法 结束");

//此处是记录服务器端的时间,所以它也引用了LogHelper但,与客户端数据 不共享,所以需要做一些特殊处理
LogHelper.FileName = "";//这句就是做的特殊处理,你们看了代码就会懂的。
LogHelper.WriteToLog("4. 服务器端向表中插入数据 开始");
LogHelper.WriteToLog("4. 服务器端向表中插入数据 结束");
LogHelper.WriteToLog("5. 服务器端处理数据 开始");
LogHelper.WriteToLog("5. 服务器端处理数据 结束");

LogHelper.WriteToLog("6. 客户端刷新数据 开始");
LogHelper.WriteToLog("6. 客户端刷新数据 结束");

开始与结束之间放的就是你要测试的代码。

原文地址:https://www.cnblogs.com/pnljs/p/3037995.html