C# CHTMLLogFile 类






1.80/5 (4投票s)
2005 年 5 月 24 日
2分钟阅读

29637

382
本文介绍的 CHTMLLogFile 类为日志文件实现了 HTML 格式,并具有一些(有用的)功能。
引言
为了跟踪应用程序的执行(事件),日志文件可能很有用。 它们通常是文本文件,通过在文件末尾添加行来记录事件。 本文介绍的 CHTMLLogFile
类为日志文件实现了 HTML 格式,并具有一些(有用的)功能。
- 最新事件最先记录。(使用 IE 和 F5 将始终在列表顶部显示最新事件,而无需向下滚动。)
- 日志级别控制。(每个条目的用户定义级别。仅记录具有正确详细级别的事件。)
- 不同事件/日志条目的不同颜色。
- 日志文件大小控制。(当达到大小限制时,文件将以后缀重命名,并创建一个新文件,其名称相同,因此无需在文件更改时关闭/打开 IE。只需 F5 即可。)
背景
日志文件的结构如下所示
将新事件添加到日志文件时,标头被假定为固定大小,因为它被读取并跳过。
执行顺序是
- 读取现有文件。
- 截断现有文件。
- 写入标头
- 写入新事件
- 通过跳过标头并向文件添加旧事件来解析读取的文件。
使用代码
有两个类:LogItem
和 CHTMLLogFileClass
,它们是 CHTMLLogNamespace
命名空间的一部分。(将 CHTMLLogfile.cs 文件添加到您的项目中。)
下面列出的 LogItem
类实现某种结构,其中包含有关应用程序执行中特定事件的详细信息。 例如,如果我们要记录错误,我们将创建一个 LogItem
,其值为
Name="ERROR", Color="red", FontSize=2, Level= 1
(1 是最高严重级别。级别越高,严重程度越低。)
public class LogItem : IComparable
{
public string m_strName;
public string m_strColor;
public int m_nFontSize;
public int m_nLevel;
public LogItem(string strName,string strColor, int nFontSize,int nLevel)
{
m_strName =strName;
m_strColor = strColor;
m_nFontSize = nFontSize;
m_nLevel=nLevel;
}
public Int32 CompareTo(Object obj)
{
LogItem tmpObj = (LogItem) obj;
return (this.m_strName.ToLower().CompareTo(tmpObj.m_strName.ToLower()));
}
}
注意:CompareTo
方法此时未使用。 如果需要,它可用于对 LogItem
元素数组进行排序。
按照以下准则在您的应用程序中启用和使用该类
using CHTMLLogNamespace;
public class 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();
}
private bool 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);
//********************************************************************
return true;
}
}
m_logfileMain.LOGLEVEL = 4;
日志级别 4 将仅记录使用 m_logfileMain.AddHeaderItem("Info","black",2,4);
中第 4 个参数创建的事件,其值为 4 或更低。 当在应用程序中调用 LogMessage
方法时,将不会记录使用级别 5 创建的日志条目。
每当需要记录事件时,都应调用 LogMessage
方法。 第一个参数是在上面的代码片段中创建的条目的名称。 比较不区分大小写,因此您使用 "Error" 或 "error" 调用以下方法对于这样添加的条目类型并不重要
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");