MathgeomGLS
64 строки · 1.2 Кб
1unit Velthuis.Loggers;
2
3interface
4
5uses
6System.Classes;
7
8type
9ILogger = interface
10['{B6821CA6-64F8-48B0-89D0-A9A3E6304D82}']
11procedure Log(Msg: string); overload;
12procedure Log(Format: string; Args: array of const); overload;
13end;
14
15TLogger = class(TInterfacedObject, ILogger)
16private
17FStream: TStream;
18FWriter: TStreamWriter;
19public
20constructor Create(S: TStream); overload;
21constructor Create(LogFileName: string); overload;
22destructor Destroy; override;
23procedure Log(Msg: string); overload;
24procedure Log(Format: string; Args: array of const); overload;
25end;
26
27implementation
28
29uses
30System.SysUtils;
31
32{ TLogger }
33
34constructor TLogger.Create(S: TStream);
35begin
36FStream := S;
37FWriter := TStreamWriter.Create(S);
38end;
39
40constructor TLogger.Create(LogFileName: string);
41var
42F: TFileStream;
43begin
44F := TFileStream.Create(LogFileName, fmCreate);
45Create(F);
46end;
47
48destructor TLogger.Destroy;
49begin
50FWriter.Free;
51FStream.Free;
52end;
53
54procedure TLogger.Log(Msg: string);
55begin
56FWriter.WriteLine(Msg);
57end;
58
59procedure TLogger.Log(Format: string; Args: array of const);
60begin
61FWriter.WriteLine(System.SysUtils.Format(Format, Args));
62end;
63
64end.
65