LazLogger: improved interaction with special widgetset needs

git-svn-id: trunk@35813 -
This commit is contained in:
martin 2012-03-07 23:08:25 +00:00
parent 440feab405
commit d9162800f5
5 changed files with 45 additions and 20 deletions

View File

@ -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;

View File

@ -30,7 +30,18 @@ type
end;
PLazLoggerLogGroup = ^TLazLoggerLogGroup;
TLazLoggerWriteEvent = procedure (Sender: TObject; S: string; var Handled: Boolean) of object;
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

View File

@ -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}

View File

@ -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);

View File

@ -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);