帮酷LOGO
0 0 评论
文章标签:  

Sample Image

介绍

为了跟踪应用程序的执行( 事件),日志文件可能有用。 通常,它们是在文件末尾添加行来记录事件的文本文件。 本文介绍的CHTMLLogFile 类为日志文件实现了一个HTML格式,其中包含一些( 有用) 功能:

  • 最新的事件先录。 ( 使用 IE 和F5将始终在 List 顶部显示最新事件,而不需要向下滚动)。
  • Loglevel控件( 用户定义的每种类型的级别)。 只有具有正确详细级别的事件才会被记录。)
  • 不同事件/日志条目的不同颜色。
  • 日志文件大小控件。( 达到大小限制时,文件重命名,并且在文件更改时不需要关闭/打开 IE。 只要F5就足够了。

Background

日志文件的结构显示为 below:

Sample Image

向日志文件添加新事件时,header 被假定为固定大小,因为它被读取和跳过。

执行顺序为:

  • 读取现有文件。
  • 截断现有文件。
  • 写入 header
  • 写入新事件
  • 通过跳过 header 并将旧事件添加到文件来解析读取文件。

使用代码

有两个类:LogItemCHTMLLogFileClass,它们是 CHTMLLogNamespace 命名空间的一部分。 ( 将 CHTMLLogfile.cs 文件添加到项目中。)

在应用程序执行过程中,LogItem 类列表 below 实现了一些关于特定事件的详细结构。 例如如果要记录一个错误,我们将创建一个具有以下值的LogItem:

Name="ERROR", Color="red", FontSize=2, Level= 1

( 1 是最高级别。 级别越高,严重度越低。

publicclass LogItem : IComparable
{
 publicstring m_strName;
 publicstring m_strColor;
 publicint m_nFontSize;
 publicint m_nLevel;
 public LogItem(string strName,string strColor, int nFontSize,int nLevel)
 {
 m_strName =strName;
 m_strColor = strColor;
 m_nFontSize = nFontSize;
 m_nLevel=nLevel;
 }
 publicInt32 CompareTo(Object obj)
 {
 LogItem tmpObj = (LogItem) obj;
 return (this.m_strName.ToLower().CompareTo(tmpObj.m_strName.ToLower()));
 }
}

注意:CompareTo 方法在此时未使用。 如果需要,它可以用来对 LogItem 元素的array 进行排序。

按照 below的准则在应用程序中启用和使用该类:

using CHTMLLogNamespace;publicclass MainForm : System.Windows.Forms.Form
{
 private System.ComponentModel.Container components = null; 
 private CHTMLLogFileClass m_logfileMain;
 public MainForm() 
 { 
 // Required for Windows Form Designer support  InitializeComponent(); 
 // TODO: Add any constructor code after InitializeComponent call  InitializeApplication();
 }
 privatebool InitializeApplication()
 { 
 //******************************************************************** string strPath = AppDomain.CurrentDomain.BaseDirectory+"Log"; 
 string strName = System.DateTime.Now.ToString("yyyy-MM-dd")+ ".html"; 
 m_logfileMain = new CHTMLLogFileClass(strPath+strName); 
 m_logfileMain.LOGLEVEL = 4; 
 m_logfileMain.MAXSIZE = 5; 
 m_logfileMain.AddHeaderItem("ERROR","red",2,1); 
 m_logfileMain.AddHeaderItem("Performance","blue",2,2);
 m_logfileMain.AddHeaderItem("Event","green",2,3); 
 m_logfileMain.AddHeaderItem("Info","black",2,4); 
 //********************************************************************returntrue; 
 } 
}
m_logfileMain.LOGLEVEL = 4;

日志级别 4将仅记录用 4th 参数创建的事件 m_logfileMain.AddHeaderItem("Info","black",2,4); 值为 4或者 below。 在应用程序中调用 LogMessage 方法时,将不记录使用 5级别创建的日志项。

每当需要记录事件时,都应该调用 LogMessage 方法。 1st 参数是在代码段 上面 中创建的条目的名称。 比较区分大小写,因此,如果你对添加的条目类型调用了 below 或者,则该方法不重要,例如:

m_logfileMain.AddHeaderItem("ERROR","red",2,1);
m_logfileMain.LogMessage("Performance","test");
m_logfileMain.LogMessage("ERROR","test"); 
m_logfileMain.LogMessage("Event","test"); 
m_logfileMain.LogMessage("Info","test");


文章标签:  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语