diff --git a/components/lazutils/LazLoggerImpl.inc b/components/lazutils/LazLoggerImpl.inc index b908c8156d..f3ed6a8dd9 100644 --- a/components/lazutils/LazLoggerImpl.inc +++ b/components/lazutils/LazLoggerImpl.inc @@ -5,7 +5,6 @@ Used by: - LazLoggerDummy *) - procedure DebuglnStack(const s: string); begin {$IFnDEF LazLoggerDummy} @@ -139,138 +138,138 @@ begin {$ENDIF} end; -procedure DebuglnStack(LogGroup: PLazLoggerLogGroup; const s: string); +procedure DebuglnStack(LogEnabled: TLazLoggerLogEnabled; const s: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebuglnStack(LogGroup, s); + DebugLogger.DebuglnStack(LogEnabled, s); {$ENDIF} end; -procedure DbgOut(LogGroup: PLazLoggerLogGroup; const s: string); +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DbgOut(LogGroup, s); + DebugLogger.DbgOut(LogEnabled, s); {$ENDIF} end; -procedure DbgOut(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DbgOut(LogGroup, Args); + DebugLogger.DbgOut(LogEnabled, Args); {$ENDIF} end; -procedure DbgOut(LogGroup: PLazLoggerLogGroup; const S: String; Args: array of const); +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DbgOut(LogGroup, s, Args); + DebugLogger.DbgOut(LogEnabled, s, Args); {$ENDIF} end; -procedure DbgOut(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string; +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DbgOut(LogGroup, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); + DebugLogger.DbgOut(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); {$ENDIF} end; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; const s: string); +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLn(LogGroup, s); + DebugLogger.DebugLn(LogEnabled, s); {$ENDIF} end; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLn(LogGroup, Args); + DebugLogger.DebugLn(LogEnabled, Args); {$ENDIF} end; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; const S: String; Args: array of const); +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLn(LogGroup, s, Args); + DebugLogger.DebugLn(LogEnabled, s, Args); {$ENDIF} end; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string; +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLn(LogGroup, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); + DebugLogger.DebugLn(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); {$ENDIF} end; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s: string); +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnEnter(LogGroup, s); + DebugLogger.DebugLnEnter(LogEnabled, s); {$ENDIF} end; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnEnter(LogGroup, Args); + DebugLogger.DebugLnEnter(LogEnabled, Args); {$ENDIF} end; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; s: string; Args: array of const); +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnEnter(LogGroup, s, Args); + DebugLogger.DebugLnEnter(LogEnabled, s, Args); {$ENDIF} end; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string; +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnEnter(LogGroup, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); + DebugLogger.DebugLnEnter(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); {$ENDIF} end; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; const s: string); +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnExit(LogGroup, s); + DebugLogger.DebugLnExit(LogEnabled, s); {$ENDIF} end; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnExit(LogGroup, Args); + DebugLogger.DebugLnExit(LogEnabled, Args); {$ENDIF} end; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; s: string; Args: array of const); +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnExit(LogGroup, s, Args); + DebugLogger.DebugLnExit(LogEnabled, s, Args); {$ENDIF} end; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string; +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin {$IFnDEF USED_BY_LAZLOGGER_DUMMY} - DebugLogger.DebugLnExit(LogGroup, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); + DebugLogger.DebugLnExit(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18); {$ENDIF} end; diff --git a/components/lazutils/LazLoggerIntf.inc b/components/lazutils/LazLoggerIntf.inc index a0f6d50678..89babb541a 100644 --- a/components/lazutils/LazLoggerIntf.inc +++ b/components/lazutils/LazLoggerIntf.inc @@ -41,42 +41,42 @@ procedure DebugLnExit (const s1, s2: string; const s3: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); inline; overload; -procedure DebuglnStack(LogGroup: PLazLoggerLogGroup; const s: string = ''); +procedure DebuglnStack(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); -procedure DbgOut(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; -procedure DbgOut(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; -procedure DbgOut(LogGroup: PLazLoggerLogGroup; const S: String; Args: array of const); overload;// similar to Format(s,Args) -procedure DbgOut(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); overload;// similar to Format(s,Args) +procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; const s13: string = ''; const s14: string = ''; const s15: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; -procedure DebugLn(LogGroup: PLazLoggerLogGroup; const S: String; Args: array of const); overload;// similar to Format(s,Args) -procedure DebugLn(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); overload;// similar to Format(s,Args) +procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; const s13: string = ''; const s14: string = ''; const s15: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; s: string; Args: array of const); overload; -procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); overload; +procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; const s13: string = ''; const s14: string = ''; const s15: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; s: string; Args: array of const); overload; -procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); overload; +procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; diff --git a/components/lazutils/lazlogger.pas b/components/lazutils/lazlogger.pas index ffa3cf808b..5bdfa2af3a 100644 --- a/components/lazutils/lazlogger.pas +++ b/components/lazutils/lazlogger.pas @@ -151,8 +151,8 @@ type procedure IncreaseIndent; overload; override; procedure DecreaseIndent; overload; override; - procedure IncreaseIndent(LogGroup: PLazLoggerLogGroup); overload; override; - procedure DecreaseIndent(LogGroup: PLazLoggerLogGroup); overload; override; + procedure IncreaseIndent(LogEnabled: TLazLoggerLogEnabled); overload; virtual; + procedure DecreaseIndent(LogEnabled: TLazLoggerLogEnabled); overload; virtual; procedure IndentChanged; override; procedure CreateIndent; virtual; function GetBlockHandler(AIndex: Integer): TLazLoggerBlockHandler; override; @@ -654,28 +654,27 @@ begin CreateIndent; end; -procedure TLazLoggerFile.IncreaseIndent(LogGroup: PLazLoggerLogGroup); +procedure TLazLoggerFile.IncreaseIndent(LogEnabled: TLazLoggerLogEnabled); begin - if (LogGroup <> nil) then begin - if (not LogGroup^.Enabled) then exit; - inc(LogGroup^.FOpenedIndents); - IncreaseIndent; - end - else - IncreaseIndent; + if not (LogEnabled.Enabled) then exit; + + if (LogEnabled.Group <> nil) and (LogEnabled.Group^.Enabled) then + inc(LogEnabled.Group^.FOpenedIndents); + IncreaseIndent; end; -procedure TLazLoggerFile.DecreaseIndent(LogGroup: PLazLoggerLogGroup); +procedure TLazLoggerFile.DecreaseIndent(LogEnabled: TLazLoggerLogEnabled); begin - if (LogGroup <> nil) then begin - // close what was opened, even if now disabled - // only close, if opened by this group - if (LogGroup^.FOpenedIndents <= 0) then exit; - dec(LogGroup^.FOpenedIndents); + if (LogEnabled.Enabled) then begin + if LogEnabled.Group <> nil then + dec(LogEnabled.Group^.FOpenedIndents); DecreaseIndent; end else + if (LogEnabled.Group <> nil) and (LogEnabled.Group^.FOpenedIndents > 0) then begin + dec(LogEnabled.Group^.FOpenedIndents); DecreaseIndent; + end; end; procedure TLazLoggerFile.IndentChanged; diff --git a/components/lazutils/lazloggerbase.pas b/components/lazutils/lazloggerbase.pas index 41f9d9d381..4f01cdd9a9 100644 --- a/components/lazutils/lazloggerbase.pas +++ b/components/lazutils/lazloggerbase.pas @@ -41,6 +41,18 @@ type end; PLazLoggerLogGroup = ^TLazLoggerLogGroup; + TLazLoggerLogEnabled = record + Enabled: Boolean; + Group: PLazLoggerLogGroup; // if only one group / remember nestlevel count + end; + +operator := (g: PLazLoggerLogGroup): TLazLoggerLogEnabled; +operator := (g: Boolean): TLazLoggerLogEnabled; +operator and (g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; +operator or (g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; + +type + TLazLoggerWriteTarget = ( lwtNone, lwtStdOut, lwtStdErr, @@ -116,8 +128,8 @@ type procedure IncreaseIndent; overload; virtual; procedure DecreaseIndent; overload; virtual; - procedure IncreaseIndent({%H-}LogGroup: PLazLoggerLogGroup); overload; virtual; - procedure DecreaseIndent({%H-}LogGroup: PLazLoggerLogGroup); overload; virtual; + procedure IncreaseIndent({%H-}LogEnabled: TLazLoggerLogEnabled); overload; virtual; + procedure DecreaseIndent({%H-}LogEnabled: TLazLoggerLogEnabled); overload; virtual; procedure IndentChanged; virtual; function GetBlockHandler({%H-}AIndex: Integer): TLazLoggerBlockHandler; virtual; @@ -194,42 +206,42 @@ type const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; - procedure DebuglnStack(LogGroup: PLazLoggerLogGroup; const s: string = ''); + procedure DebuglnStack(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); - procedure DbgOut(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; - procedure DbgOut(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; - procedure DbgOut(LogGroup: PLazLoggerLogGroup; const S: String; Args: array of const); overload;// similar to Format(s,Args) - procedure DbgOut(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; + procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; + procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; + procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); overload;// similar to Format(s,Args) + procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; const s13: string = ''; const s14: string = ''; const s15: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; - procedure DebugLn(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; - procedure DebugLn(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; - procedure DebugLn(LogGroup: PLazLoggerLogGroup; const S: String; Args: array of const); overload;// similar to Format(s,Args) - procedure DebugLn(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; + procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; + procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; + procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); overload;// similar to Format(s,Args) + procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; const s13: string = ''; const s14: string = ''; const s15: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; - procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; - procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; - procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; s: string; Args: array of const); overload; - procedure DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; + procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; + procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; + procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); overload; + procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; const s13: string = ''; const s14: string = ''; const s15: string = ''; const s16: string = ''; const s17: string = ''; const s18: string = ''); overload; - procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; const s: string = ''); overload; - procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; Args: array of const); overload; - procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; s: string; Args: array of const); overload; - procedure DebugLnExit(LogGroup: PLazLoggerLogGroup; const s1, s2: string; const s3: string = ''; + procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s: string = ''); overload; + procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; Args: array of const); overload; + procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); overload; + procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string = ''; const s4: string = ''; const s5: string = ''; const s6: string = ''; const s7: string = ''; const s8: string = ''; const s9: string = ''; const s10: string = ''; const s11: string = ''; const s12: string = ''; @@ -312,6 +324,42 @@ var // Using base TRefCountedObject, so if none of the functions is used in the PrevLazLogger: TRefCountedObject = nil; TheLazLoggerGroups: TRefCountedObject = nil; +operator := (g: PLazLoggerLogGroup): TLazLoggerLogEnabled; +begin + Result.Enabled := (g = nil) or (g^.Enabled); + Result.Group := g; +end; + +operator := (g: Boolean): TLazLoggerLogEnabled; +begin + Result.Enabled := g; + Result.Group := nil; +end; + +operator and(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; +begin + Result.Enabled := g1.Enabled and g2.Enabled; + if (g1.Group = nil) and g1.Enabled then + Result.Group := g2.Group + else + if (g2.Group = nil) and g2.Enabled then + Result.Group := g1.Group + else + Result.Group := nil; +end; + +operator or(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; +begin + Result.Enabled := g1.Enabled or g2.Enabled; + if (g1.Group = nil) then + Result.Group := g2.Group + else + if (g2.Group = nil) then + Result.Group := g1.Group + else + Result.Group := nil; +end; + procedure CreateDebugLogger; begin if (TheLazLogger <> nil) then @@ -714,12 +762,12 @@ begin // end; -procedure TLazLogger.IncreaseIndent(LogGroup: PLazLoggerLogGroup); +procedure TLazLogger.IncreaseIndent(LogEnabled: TLazLoggerLogEnabled); begin // end; -procedure TLazLogger.DecreaseIndent(LogGroup: PLazLoggerLogGroup); +procedure TLazLogger.DecreaseIndent(LogEnabled: TLazLoggerLogEnabled); begin // end; @@ -982,133 +1030,133 @@ begin DoDebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18); end; -procedure TLazLogger.DebuglnStack(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebuglnStack(LogEnabled: TLazLoggerLogEnabled; const s: string); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DebuglnStack(s); end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; const s: string); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDbgOut(s); end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDbgOut(ArgsToString(Args)); end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; const S: String; +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDbgOut(Format(S, Args)); end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDbgOut(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18); end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; const s: string); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDebugLn(s); end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDebugLn(ArgsToString(Args)); end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; const S: String; +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDebugLn(Format(S, Args)); end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + if not LogEnabled.Enabled then exit; DoDebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18); end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s: string); begin - if not( (LogGroup <> nil) and (not LogGroup^.Enabled) ) then + if LogEnabled.Enabled then DoDebugLn(s); - IncreaseIndent(LogGroup); + IncreaseIndent(LogEnabled); end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin - if not( (LogGroup <> nil) and (not LogGroup^.Enabled) ) then + if LogEnabled.Enabled then DoDebugLn(ArgsToString(Args)); - IncreaseIndent(LogGroup); + IncreaseIndent(LogEnabled); end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; s: string; +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); begin - if not( (LogGroup <> nil) and (not LogGroup^.Enabled) ) then + if LogEnabled.Enabled then DoDebugLn(Format(S, Args)); - IncreaseIndent(LogGroup); + IncreaseIndent(LogEnabled); end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin - if not( (LogGroup <> nil) and (not LogGroup^.Enabled) ) then + if LogEnabled.Enabled then DoDebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18); - IncreaseIndent(LogGroup); + IncreaseIndent(LogEnabled); end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s: string); begin - DecreaseIndent(LogGroup); - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + DecreaseIndent(LogEnabled); + if not LogEnabled.Enabled then exit; DoDebugLn(s); end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin - DecreaseIndent(LogGroup); - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + DecreaseIndent(LogEnabled); + if not LogEnabled.Enabled then exit; DoDebugLn(ArgsToString(Args)); end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; s: string; +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); begin - DecreaseIndent(LogGroup); - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + DecreaseIndent(LogEnabled); + if not LogEnabled.Enabled then exit; DoDebugLn(Format(S, Args)); end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; const s17: string; const s18: string); begin - DecreaseIndent(LogGroup); - if (LogGroup <> nil) and (not LogGroup^.Enabled) then exit; + DecreaseIndent(LogEnabled); + if not LogEnabled.Enabled then exit; DoDebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18); end; diff --git a/components/lazutils/lazloggerdummy.pas b/components/lazutils/lazloggerdummy.pas index a227db81e3..d1b1386be3 100644 --- a/components/lazutils/lazloggerdummy.pas +++ b/components/lazutils/lazloggerdummy.pas @@ -41,6 +41,15 @@ type end; PLazLoggerLogGroup = ^TLazLoggerLogGroup; + TLazLoggerLogEnabled = record end; + +operator := (g: PLazLoggerLogGroup): TLazLoggerLogEnabled; +operator := (g: Boolean): TLazLoggerLogEnabled; +operator and (g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; +operator or (g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; + +type + TLazLoggerWriteEvent = procedure (Sender: TObject; S: string; var Handled: Boolean) of object; @@ -147,42 +156,42 @@ type const {%H-}s16: string = ''; const {%H-}s17: string = ''; const {%H-}s18: string = ''); overload; - procedure DebuglnStack({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s: string = ''); + procedure DebuglnStack({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s: string = ''); - procedure DbgOut({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s: string = ''); overload; - procedure DbgOut({%H-}LogGroup: PLazLoggerLogGroup; {%H-}Args: array of const); overload; - procedure DbgOut({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}S: String; {%H-}Args: array of const); overload;// similar to Format(s,Args) - procedure DbgOut({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; + procedure DbgOut({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s: string = ''); overload; + procedure DbgOut({%H-}LogEnabled: TLazLoggerLogEnabled; {%H-}Args: array of const); overload; + procedure DbgOut({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}S: String; {%H-}Args: array of const); overload;// similar to Format(s,Args) + procedure DbgOut({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; const {%H-}s4: string = ''; const {%H-}s5: string = ''; const {%H-}s6: string = ''; const {%H-}s7: string = ''; const {%H-}s8: string = ''; const {%H-}s9: string = ''; const {%H-}s10: string = ''; const {%H-}s11: string = ''; const {%H-}s12: string = ''; const {%H-}s13: string = ''; const {%H-}s14: string = ''; const {%H-}s15: string = ''; const {%H-}s16: string = ''; const {%H-}s17: string = ''; const {%H-}s18: string = ''); overload; - procedure DebugLn({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s: string = ''); overload; - procedure DebugLn({%H-}LogGroup: PLazLoggerLogGroup; {%H-}Args: array of const); overload; - procedure DebugLn({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}S: String; {%H-}Args: array of const); overload;// similar to Format(s,Args) - procedure DebugLn({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; + procedure DebugLn({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s: string = ''); overload; + procedure DebugLn({%H-}LogEnabled: TLazLoggerLogEnabled; {%H-}Args: array of const); overload; + procedure DebugLn({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}S: String; {%H-}Args: array of const); overload;// similar to Format(s,Args) + procedure DebugLn({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; const {%H-}s4: string = ''; const {%H-}s5: string = ''; const {%H-}s6: string = ''; const {%H-}s7: string = ''; const {%H-}s8: string = ''; const {%H-}s9: string = ''; const {%H-}s10: string = ''; const {%H-}s11: string = ''; const {%H-}s12: string = ''; const {%H-}s13: string = ''; const {%H-}s14: string = ''; const {%H-}s15: string = ''; const {%H-}s16: string = ''; const {%H-}s17: string = ''; const {%H-}s18: string = ''); overload; - procedure DebugLnEnter({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s: string = ''); overload; - procedure DebugLnEnter({%H-}LogGroup: PLazLoggerLogGroup; {%H-}Args: array of const); overload; - procedure DebugLnEnter({%H-}LogGroup: PLazLoggerLogGroup; {%H-}s: string; {%H-}Args: array of const); overload; - procedure DebugLnEnter({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; + procedure DebugLnEnter({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s: string = ''); overload; + procedure DebugLnEnter({%H-}LogEnabled: TLazLoggerLogEnabled; {%H-}Args: array of const); overload; + procedure DebugLnEnter({%H-}LogEnabled: TLazLoggerLogEnabled; {%H-}s: string; {%H-}Args: array of const); overload; + procedure DebugLnEnter({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; const {%H-}s4: string = ''; const {%H-}s5: string = ''; const {%H-}s6: string = ''; const {%H-}s7: string = ''; const {%H-}s8: string = ''; const {%H-}s9: string = ''; const {%H-}s10: string = ''; const {%H-}s11: string = ''; const {%H-}s12: string = ''; const {%H-}s13: string = ''; const {%H-}s14: string = ''; const {%H-}s15: string = ''; const {%H-}s16: string = ''; const {%H-}s17: string = ''; const {%H-}s18: string = ''); overload; - procedure DebugLnExit({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s: string = ''); overload; - procedure DebugLnExit({%H-}LogGroup: PLazLoggerLogGroup; {%H-}Args: array of const); overload; - procedure DebugLnExit({%H-}LogGroup: PLazLoggerLogGroup; {%H-}s: string; {%H-}Args: array of const); overload; - procedure DebugLnExit({%H-}LogGroup: PLazLoggerLogGroup; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; + procedure DebugLnExit({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s: string = ''); overload; + procedure DebugLnExit({%H-}LogEnabled: TLazLoggerLogEnabled; {%H-}Args: array of const); overload; + procedure DebugLnExit({%H-}LogEnabled: TLazLoggerLogEnabled; {%H-}s: string; {%H-}Args: array of const); overload; + procedure DebugLnExit({%H-}LogEnabled: TLazLoggerLogEnabled; const {%H-}s1, {%H-}s2: string; const {%H-}s3: string = ''; const {%H-}s4: string = ''; const {%H-}s5: string = ''; const {%H-}s6: string = ''; const {%H-}s7: string = ''; const {%H-}s8: string = ''; const {%H-}s9: string = ''; const {%H-}s10: string = ''; const {%H-}s11: string = ''; const {%H-}s12: string = ''; @@ -225,6 +234,26 @@ var // Using base TRefCountedObject, so if none of the functions is used in the {$I LazLoggerImpl.inc} {$pop} +operator := (g: PLazLoggerLogGroup): TLazLoggerLogEnabled; +begin + Result := Default(TLazLoggerLogEnabled); +end; + +operator := (g: Boolean): TLazLoggerLogEnabled; +begin + Result := Default(TLazLoggerLogEnabled); +end; + +operator and(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; +begin + Result := Default(TLazLoggerLogEnabled); +end; + +operator or(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled; +begin + Result := Default(TLazLoggerLogEnabled); +end; + procedure CreateDebugLogger; begin if (TheLazLogger <> nil) then @@ -425,28 +454,28 @@ begin end; -procedure TLazLogger.DebuglnStack(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebuglnStack(LogEnabled: TLazLoggerLogEnabled; const s: string); begin end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; const s: string); begin end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; const S: String; +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); begin end; -procedure TLazLogger.DbgOut(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DbgOut(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; @@ -455,23 +484,23 @@ begin end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; const s: string); begin end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; const S: String; +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const); begin end; -procedure TLazLogger.DebugLn(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DebugLn(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; @@ -480,23 +509,23 @@ begin end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s: string); begin end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; s: string; +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); begin end; -procedure TLazLogger.DebugLnEnter(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string; @@ -505,23 +534,23 @@ begin end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; const s: string); +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s: string); begin end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; Args: array of const); +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; Args: array of const); begin end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; s: string; +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const); begin end; -procedure TLazLogger.DebugLnExit(LogGroup: PLazLoggerLogGroup; const s1, s2: string; +procedure TLazLogger.DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string; const s4: string; const s5: string; const s6: string; const s7: string; const s8: string; const s9: string; const s10: string; const s11: string; const s12: string; const s13: string; const s14: string; const s15: string; const s16: string;