码迷,mamicode.com
首页 > 其他好文 > 详细

日志类(一)字段

时间:2015-09-15 16:17:37      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

今年一直想写一个基于完成端口的服务器,但是因为生活上的事屡屡推迟。此次怀着进行到底的决心开始。给自己的目标每周2单元(业余爱好者,能写的时间不多.2单元安排比较合理)


言归正传。一个完备的服务器首先必不可缺的是预警系统。无论是内部错误,还是外部攻击。都应该有响应的处理,那么记录下服务器的状态是我们分析问题的关键。那么日志类应运而生。

一个工程级的日志类应具备消耗资源少(CPU,内存),稳定,便于管理和查看的特点。数据库模式就值得我们参考,写一个轻量级的防数据库模式的日志类是此次目标。

我将此次工程分为几个阶段

一. 字段(防数据库字段)

二. 文件管理(进行文件的创建以及删除)

三. 日志读写(日志主体)

四. 线程处理(一个工程级的日志类,这是必不可缺的。可以是多个类或函数公用。但不是多个线程。每个工程只分配一个线程即可。)


 

字段类如下所示:


  1  { *
  2     字段类
  3     * }
  4   TFields = class
  5   private
  6     // 标题
  7     FTitle: TStringList;
  8     // 默认值
  9     FDefaultValue: TStringList;
 10     function ReadCount: Integer;
 11   public
 12     property Count: Integer read ReadCount;
 13     constructor Create();
 14     destructor Destroy; override;
 15     // 添加字段
 16     function AddTitle(newTitle: string; const Default: string = ‘‘): Integer;
 17     // 查找字段
 18     function Index(searTitle: string): Integer;
 19     // 删除字段
 20     function DeleteTitle(delTitle: string): Boolean;
 21     // 修改字段默认值
 22     function SetDefault(setTitle, Default: string): Boolean;
 23     // 查看字段默认值
 24     function SeeDefault(seeTitle: string): string;
 25     // 改变字段标题
 26     function ChangeTitle(oldTitle, newTitle: string;
 27       const Default: string = ‘‘): Boolean;
 28     // 清空标题
 29     procedure ClearTitle();
 30   end;
 31 
 32 { 实现如下 }
 33 
 34 { TFields }
 35 
 36 function TFields.AddTitle(newTitle: string; const Default: string): Integer;
 37 begin
 38   Result := -1;
 39   if Index(newTitle) = -1 then
 40   begin
 41     Result := FTitle.Add(newTitle);
 42     FDefaultValue.Add(Default);
 43   end;
 44 end;
 45 
 46 function TFields.ChangeTitle(oldTitle, newTitle: string;
 47   const Default: string = ‘‘): Boolean;
 48 var
 49   TempInt: Integer;
 50 begin
 51   Result := False;
 52   TempInt := Index(oldTitle);
 53   if TempInt <> -1 then
 54   begin
 55     FTitle.Strings[TempInt] := newTitle;
 56     FDefaultValue.Strings[TempInt] := Default;
 57     Result := True;
 58   end;
 59 end;
 60 
 61 procedure TFields.ClearTitle;
 62 begin
 63   FTitle.Clear;
 64   FDefaultValue.Clear;
 65 end;
 66 
 67 constructor TFields.Create(AOwner: TLog);
 68 begin
 69   FTitle := TStringList.Create;
 70   FDefaultValue := TStringList.Create;
 71 end;
 72 
 73 function TFields.DeleteTitle(delTitle: string): Boolean;
 74 var
 75   TempInt: Integer;
 76 begin
 77   Result := False;
 78   TempInt := Index(delTitle);
 79   if TempInt <> -1 then
 80   begin
 81     FTitle.Delete(TempInt);
 82     FDefaultValue.Delete(TempInt);
 83     Result := True;
 84   end;
 85 end;
 86 
 87 destructor TFields.Destroy;
 88 begin
 89   FTitle.Free;
 90   FDefaultValue.Free;
 91   inherited;
 92 end;
 93 
 94 function TFields.Index(searTitle: string): Integer;
 95 begin
 96   Result := FTitle.IndexOf(searTitle);
 97 end;
 98 
 99 function TFields.ReadCount: Integer;
100 begin
101   Result := FTitle.Count;
102 end;
103 
104 function TFields.SeeDefault(seeTitle: string): string;
105 var
106   TempInt: Integer;
107 begin
108   Result := ‘‘;
109   TempInt := Index(seeTitle);
110   if TempInt <> -1 then
111   begin
112     Result := FDefaultValue.Strings[TempInt];
113   end
114   else
115     Assert(False, Error:UnitName-> + UnitName + ,ClassName-> + ClassName +
116       FunctionName->SeeDefault,Parameter is invalid!);
117 end;
118 
119 function TFields.SetDefault(setTitle, Default: string): Boolean;
120 var
121   TempInt: Integer;
122 begin
123   Result := False;
124   TempInt := Index(setTitle);
125   if TempInt <> -1 then
126   begin
127     FDefaultValue.Strings[TempInt] := Default;
128     Result := True;
129   end;
130 end;

 

 

日志类(一)字段

标签:

原文地址:http://www.cnblogs.com/Study-Pascal/p/4810453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!