1+ (*
2+ # Logger
3+ Logging utilities for WaspLib scripts.
4+ *)
5+
16{$DEFINE WL_LOGGER_INCLUDED}
27{$INCLUDE_ONCE WaspLib/utils.simba}
38
49type
10+ (*
11+ ## ELogLevel
12+ ```pascal
13+ ELogLevel = enum(SUCCESS, WARN, ERROR);
14+ ```
15+ Enum representing log message severity levels.
16+ *)
517 ELogLevel = enum(SUCCESS, WARN, ERROR);
618
19+ (*
20+ ## TLogger
21+ Record for managing script logging to files and console output.
22+ *)
723 TLogger = record
824 Name, Path, PreviousMessage: String;
925 TimeRunning: TStopwatch;
1026 IsSetup, RepeatedMessages: Boolean;
1127 end;
1228
29+ (*
30+ ## Logger.Init
31+ ```pascal
32+ procedure TLogger.Init();
33+ ```
34+ Initializes the logger, creating the log directory and file.
35+ Called automatically at script start.
36+ *)
1337procedure TLogger.Init();
1438var
1539 files: TStringArray;
4670 Self.TimeRunning.Start();
4771end;
4872
73+ (*
74+ ## Logger.Setup
75+ ```pascal
76+ procedure TLogger.Setup(name: String = '');
77+ ```
78+ Configures the logger with a script name. Creates a dedicated log directory.
79+
80+ Example:
81+ ```pascal
82+ Logger.Setup('MyScript');
83+ ```
84+ *)
4985procedure TLogger.Setup(name: String = '');
5086var
5187 old: String;
@@ -77,10 +113,24 @@ begin
77113 FileAppend(Self.Path, line + LINE_SEP);
78114end;
79115
80-
81116var
117+ (*
118+ ## Logger variable
119+ Global {ref}`TLogger` variable.
120+ *)
82121 Logger: TLogger;
83122
123+ (*
124+ ## GetDebugLn
125+ ```pascal
126+ function GetDebugLn(text: String; log: Boolean = True): String;
127+ function GetDebugLn(name, text: String; log: Boolean = True): String; overload;
128+ function GetDebugLn(text: String; level: ELogLevel; log: Boolean = True): String; overload;
129+ function GetDebugLn(name, text: String; level: ELogLevel; log: Boolean = True): String; overload;
130+ ```
131+ Returns a formatted debug string with timestamp.
132+ Optionally logs to file and applies color formatting based on `level`.
133+ *)
84134function GetDebugLn(text: String; log: Boolean = True): String;
85135begin
86136 Result := GetTimeStamp() + ': ' + text;
@@ -112,6 +162,14 @@ begin
112162end;
113163
114164
165+ (*
166+ ## Logger.Info
167+ ```pascal
168+ procedure TLogger.Info(text: String; vars: TVariantArray = []);
169+ ```
170+ Logs an info message. Duplicate consecutive messages are suppressed unless
171+ `Logger.RepeatedMessages` is True.
172+ *)
115173procedure TLogger.Info(text: String; vars: TVariantArray = []);
116174var
117175 formatted: String;
@@ -124,6 +182,13 @@ begin
124182 Self.PreviousMessage := formatted;
125183end;
126184
185+ (*
186+ ## Logger.Success
187+ ```pascal
188+ procedure TLogger.Success(text: String; vars: TVariantArray = []);
189+ ```
190+ Logs a success message (green colored output).
191+ *)
127192procedure TLogger.Success(text: String; vars: TVariantArray = []);
128193var
129194 formatted: String;
@@ -133,6 +198,13 @@ begin
133198 WriteLn(GetDebugLn(Self.Name, formatted, ELogLevel.SUCCESS, False));
134199end;
135200
201+ (*
202+ ## Logger.Warn
203+ ```pascal
204+ procedure TLogger.Warn(text: String; vars: TVariantArray = []);
205+ ```
206+ Logs a warning message (yellow colored output).
207+ *)
136208procedure TLogger.Warn(text: String; vars: TVariantArray = []);
137209var
138210 formatted: String;
@@ -142,6 +214,13 @@ begin
142214 WriteLn(GetDebugLn(Self.Name, formatted, ELogLevel.WARN, False));
143215end;
144216
217+ (*
218+ ## Logger.Error
219+ ```pascal
220+ procedure TLogger.Error(text: String; vars: TVariantArray = []);
221+ ```
222+ Logs an error message (red colored output).
223+ *)
145224procedure TLogger.Error(text: String; vars: TVariantArray = []);
146225var
147226 formatted: String;
@@ -151,6 +230,13 @@ begin
151230 WriteLn(GetDebugLn(Self.Name, formatted, ELogLevel.ERROR, False));
152231end;
153232
233+ (*
234+ ## Logger.Exception
235+ ```pascal
236+ procedure TLogger.Exception(text: String; vars: TVariantArray = []);
237+ ```
238+ Logs an error message and raises an exception to halt script execution.
239+ *)
154240procedure TLogger.Exception(text: String; vars: TVariantArray = []);
155241var
156242 formatted: String;
0 commit comments