• 日志的记录


    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. 客户端刷新数据 结束");

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

  • 相关阅读:
    HAL 分析
    Ubuntu 11.04 安装后要做的20件事情
    IOStableViewCell自适应高度cell里面放的是UIlable
    IOS支持的字体
    IOS TableView学习资源
    产品与市场
    软件质量与公司盈利
    计算机流派
    让你的软件支持繁体中文
    系统规划设置心得
  • 原文地址:https://www.cnblogs.com/pnljs/p/3037995.html
Copyright © 2020-2023  润新知