mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-08 14:35:58 +02:00
LazLogger: improved interaction with special widgetset needs
git-svn-id: trunk@35813 -
This commit is contained in:
parent
440feab405
commit
d9162800f5
@ -8,15 +8,8 @@ uses
|
||||
|
||||
type
|
||||
|
||||
//TLazLoggerLogGroupFlag = LazLoggerBase.TLazLoggerLogGroupFlag;
|
||||
//TLazLoggerLogGroupFlags = LazLoggerBase.TLazLoggerLogGroupFlags;
|
||||
//TLazLoggerLogGroup = LazLoggerBase.TLazLoggerLogGroup;
|
||||
PLazLoggerLogGroup = LazLoggerBase.PLazLoggerLogGroup;
|
||||
|
||||
//TLazLoggerWriteEvent = LazLoggerBase.LazLoggerBase.;
|
||||
|
||||
//TLazLogger = LazLoggerBase.TLazLogger;
|
||||
|
||||
{$DEFINE USED_BY_LAZLOGGER}
|
||||
{$I LazLoggerIntf.inc}
|
||||
|
||||
@ -44,6 +37,7 @@ type
|
||||
FUseStdOut: Boolean;
|
||||
procedure DoOpenFile;
|
||||
procedure DoCloseFile;
|
||||
function GetWriteTarget: TLazLoggerWriteTarget;
|
||||
procedure SetCloseLogFileBetweenWrites(AValue: Boolean);
|
||||
procedure SetLogName(AValue: String);
|
||||
public
|
||||
@ -58,6 +52,8 @@ type
|
||||
property LogName: String read FLogName write SetLogName;
|
||||
property UseStdOut: Boolean read FUseStdOut write FUseStdOut;
|
||||
property CloseLogFileBetweenWrites: Boolean read FCloseLogFileBetweenWrites write SetCloseLogFileBetweenWrites;
|
||||
property WriteTarget: TLazLoggerWriteTarget read GetWriteTarget;
|
||||
property ActiveLogText: PText read FActiveLogText;
|
||||
end;
|
||||
|
||||
{ TLazLoggerFile }
|
||||
@ -224,6 +220,16 @@ begin
|
||||
FActiveLogText := nil;
|
||||
end;
|
||||
|
||||
function TLazLoggerFileHandle.GetWriteTarget: TLazLoggerWriteTarget;
|
||||
begin
|
||||
Result := lwtNone;
|
||||
if FActiveLogText = @Output then
|
||||
Result := lwtStdOut
|
||||
else
|
||||
if FLogTextInUse then
|
||||
Result := lwtTextFile;
|
||||
end;
|
||||
|
||||
procedure TLazLoggerFileHandle.SetCloseLogFileBetweenWrites(AValue: Boolean);
|
||||
begin
|
||||
if FCloseLogFileBetweenWrites = AValue then Exit;
|
||||
@ -465,9 +471,10 @@ begin
|
||||
begin
|
||||
Handled := False;
|
||||
if FDebugNestAtBOL and (s <> '') then
|
||||
OnWidgetSetDbgOut(Self, FDebugIndent + s, Handled)
|
||||
OnWidgetSetDbgOut(Self, FDebugIndent + s, Handled,
|
||||
FileHandle.WriteTarget, FileHandle.ActiveLogText)
|
||||
else
|
||||
OnWidgetSetDbgOut(Self, s, Handled);
|
||||
OnWidgetSetDbgOut(Self, s, Handled, FileHandle.WriteTarget, FileHandle.ActiveLogText);
|
||||
if Handled then
|
||||
Exit;
|
||||
end;
|
||||
@ -500,9 +507,10 @@ begin
|
||||
begin
|
||||
Handled := False;
|
||||
if FDebugNestAtBOL and (s <> '') then
|
||||
OnWidgetSetDebugLn(Self, FDebugIndent + s, Handled)
|
||||
OnWidgetSetDebugLn(Self, FDebugIndent + s, Handled,
|
||||
FileHandle.WriteTarget, FileHandle.ActiveLogText)
|
||||
else
|
||||
OnWidgetSetDebugLn(Self, s, Handled);
|
||||
OnWidgetSetDebugLn(Self, s, Handled, FileHandle.WriteTarget, FileHandle.ActiveLogText);
|
||||
if Handled then
|
||||
Exit;
|
||||
end;
|
||||
|
@ -30,7 +30,18 @@ type
|
||||
end;
|
||||
PLazLoggerLogGroup = ^TLazLoggerLogGroup;
|
||||
|
||||
TLazLoggerWriteTarget = (
|
||||
lwtNone,
|
||||
lwtStdOut, lwtStdErr,
|
||||
lwtTextFile // Data will be ^Text
|
||||
);
|
||||
|
||||
TLazLoggerWriteEvent = procedure(Sender: TObject; S: string; var Handled: Boolean) of object;
|
||||
TLazLoggerWidgetSetWriteEvent = procedure(Sender: TObject;
|
||||
S: string;
|
||||
var Handled: Boolean;
|
||||
Target: TLazLoggerWriteTarget;
|
||||
Data: Pointer) of object;
|
||||
|
||||
type
|
||||
|
||||
@ -252,8 +263,8 @@ type
|
||||
// Using base TRefCountedObject, so if none of the functions is used in the app, then even the class should be smart linked
|
||||
var
|
||||
LazDebugLoggerCreator: TLazDebugLoggerCreator = nil;
|
||||
OnWidgetSetDebugLn: TLazLoggerWriteEvent;
|
||||
OnWidgetSetDbgOut: TLazLoggerWriteEvent;
|
||||
OnWidgetSetDebugLn: TLazLoggerWidgetSetWriteEvent;
|
||||
OnWidgetSetDbgOut: TLazLoggerWidgetSetWriteEvent;
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -168,7 +168,8 @@ type
|
||||
{$ifdef CD_Android}
|
||||
CombiningAccent: Cardinal;
|
||||
{$IFnDEF WithOldDebugln}
|
||||
procedure AndroidDebugLn(ASender: TObject; AStr: string; var AHandled: Boolean);
|
||||
procedure AndroidDebugLn(ASender: TObject; AStr: string; var AHandled: Boolean;
|
||||
Target: TLazLoggerWriteTarget; Data: Pointer);
|
||||
{$ELSE}
|
||||
procedure AndroidDebugLn(AStr: string);
|
||||
{$ENDIF}
|
||||
@ -196,7 +197,8 @@ type
|
||||
MobileMainForm: TLCLIntfHandle;
|
||||
// For unusual implementations of DebugLn/DebugOut
|
||||
{$IFnDEF WithOldDebugln}
|
||||
procedure AccumulatingDebugOut(ASender: TObject; AStr: string; var AHandled: Boolean);
|
||||
procedure AccumulatingDebugOut(ASender: TObject; AStr: string; var AHandled: Boolean;
|
||||
Target: TLazLoggerWriteTarget; Data: Pointer);
|
||||
{$ELSE}
|
||||
procedure AccumulatingDebugOut(AStr: string);
|
||||
{$ENDIF}
|
||||
|
@ -16,10 +16,12 @@
|
||||
//---------------------------------------------------------------
|
||||
|
||||
{$IFnDEF WithOldDebugln}
|
||||
procedure TCDWidgetSet.AccumulatingDebugOut(ASender: TObject; AStr: string; var AHandled: Boolean);
|
||||
procedure TCDWidgetSet.AccumulatingDebugOut(ASender: TObject; AStr: string; var AHandled: Boolean;
|
||||
Target: TLazLoggerWriteTarget; Data: Pointer);
|
||||
begin
|
||||
AHandled := Target in [lwtStdOut, lwtStdErr];
|
||||
if not AHandled then exit;
|
||||
AccumulatedStr := AccumulatedStr + AStr;
|
||||
AHandled := True;
|
||||
end;
|
||||
{$ELSE}
|
||||
procedure TCDWidgetSet.AccumulatingDebugOut(AStr: string);
|
||||
|
@ -474,11 +474,13 @@ begin
|
||||
end;
|
||||
|
||||
{$IFnDEF WithOldDebugln}
|
||||
procedure TCDWidgetSet.AndroidDebugLn(ASender: TObject; AStr: string; var AHandled: Boolean);
|
||||
procedure TCDWidgetSet.AndroidDebugLn(ASender: TObject; AStr: string; var AHandled: Boolean;
|
||||
Target: TLazLoggerWriteTarget; Data: Pointer);
|
||||
begin
|
||||
AHandled := Target in [lwtStdOut, lwtStdErr];
|
||||
if not AHandled then exit;
|
||||
__android_log_write(ANDROID_LOG_INFO, 'lclapp', PChar(AccumulatedStr+AStr));
|
||||
AccumulatedStr := '';
|
||||
AHandled := True;
|
||||
end;
|
||||
{$ELSE}
|
||||
procedure TCDWidgetSet.AndroidDebugLn(AStr: string);
|
||||
|
Loading…
Reference in New Issue
Block a user