-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLoggerUt.pas
71 lines (64 loc) · 1.64 KB
/
LoggerUt.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
unit LoggerUt;
interface
uses SysUtils, Dialogs, Classes, TypInfo, Math;
type
TStatusMessage = (Critical, Warning, Info);
TLogger = class(TStringList) // êëàññ äëÿ õðàíåíèÿ ñîîáùåíèé
private
FileDir: String;
public
TimeClearFile: TDateTime;
constructor Create();
procedure SaveMessage(Status: TStatusMessage; ID :Integer; Text: string); // ìåäîä äëÿ çàïèñè ñîîáùåíèÿ â ôàéë
procedure ClearFile();
end;
implementation
procedure SaveString(Text: string; Path:String);
var
f:TextFile;
Begin
AssignFile(f,Path);
if not FileExists(Path) then
begin
Rewrite(f);
CloseFile(f);
end;
Append(f);
Writeln(f,Text);
Flush(f);
CloseFile(f);
End;
constructor TLogger.Create();
begin
FileDir:=GetCurrentDir+'\file.txt';
end;
procedure TLogger.SaveMessage(Status: TStatusMessage; ID :Integer; Text: string);
var
Str:String;
Begin
Str:=DateTimeToStr(Now())+' | '+ IntToStr(ID)+' | '+GetEnumName(TypeInfo(TStatusMessage), Ord(RandomRange(0,3)))+' | '+ Text;
if Count>=10 then Delete(Count-10);
Add(Str);
SaveString(Str, FileDir);
End;
procedure TLogger.ClearFile();
var
I, OldS: integer;
TimeWord: string;
T:TDateTime; // âðåìÿ ñòðîêè èç ôàéëà
F:TStringList;
Begin
F:=TStringList.Create;
F.LoadFromFile(FileDir);
OldS:= F.Count;
for I := F.Count - 1 downto 0 do
begin
TimeWord:=Copy(F.Strings[I], 1, 19) ;
T:=StrToDateTime(TimeWord);
if now-T>=TimeClearFile then F.Delete(I);
end;
F.SaveToFile(FileDir);
ShowMessage('Èç ôàéëà ëîãà óäàëåíî:' +IntToStr(OldS-F.Count)+'çàïèñåé');
F.Free;
End;
End.