mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 07:45:54 +01:00
Updated LoggerPro, improved Wizard, general code cleaning
This commit is contained in:
parent
f8501a8db5
commit
821180ea75
@ -113,10 +113,10 @@ var
|
||||
lMiddlewaresCode: String;
|
||||
I: Integer;
|
||||
begin
|
||||
lMiddlewaresCode := '';
|
||||
lMiddlewaresCode := sLineBreak;
|
||||
for I := Low(FMiddlewares) to High(FMiddlewares) do
|
||||
begin
|
||||
lMiddlewaresCode := lMiddlewaresCode + 'FMVC.AddMiddleware(' + FMiddlewares[I] + ');' + sLineBreak;
|
||||
lMiddlewaresCode := lMiddlewaresCode + ' ' + FMiddlewares[I] + sLineBreak;
|
||||
end;
|
||||
|
||||
lJSONRPCCode := '';
|
||||
|
@ -46,6 +46,7 @@ resourcestring
|
||||
sLineBreak +
|
||||
'uses' + sLineBreak +
|
||||
' System.SysUtils,' + sLineBreak +
|
||||
' MVCFramework,' + sLineBreak +
|
||||
' MVCFramework.Logger,' + sLineBreak +
|
||||
' MVCFramework.Commons,' + sLineBreak +
|
||||
' MVCFramework.Signal,' + sLineBreak +
|
||||
@ -72,37 +73,11 @@ resourcestring
|
||||
// ' LCmd: string;' + sLineBreak +
|
||||
'begin' + sLineBreak +
|
||||
' Writeln(''** DMVCFramework Server ** build '' + DMVCFRAMEWORK_VERSION);' + sLineBreak +
|
||||
// ' LCmd := ''start'';' + sLineBreak +
|
||||
// ' if ParamCount >= 1 then' + sLineBreak +
|
||||
// ' LCmd := ParamStr(1);' + sLineBreak + sLineBreak +
|
||||
// ' LCustomHandler := function(const Value: String; const Server: TIdHTTPWebBrokerBridge; out Handled: Boolean): THandleCommandResult' + sLineBreak +
|
||||
// ' begin' + sLineBreak +
|
||||
// ' Handled := False;' + sLineBreak +
|
||||
// ' Result := THandleCommandResult.Unknown;' + sLineBreak +
|
||||
// sLineBreak +
|
||||
// ' // Write here your custom command for the REPL using the following form...' + sLineBreak +
|
||||
// ' // ***' + sLineBreak +
|
||||
// ' // Handled := False;' + sLineBreak +
|
||||
// ' // if (Value = ''apiversion'') then' + sLineBreak +
|
||||
// ' // begin' + sLineBreak +
|
||||
// ' // REPLEmit(''Print my API version number'');' + sLineBreak +
|
||||
// ' // Result := THandleCommandResult.Continue;' + sLineBreak +
|
||||
// ' // Handled := True;' + sLineBreak +
|
||||
// ' // end' + sLineBreak +
|
||||
// ' // else if (Value = ''datetime'') then' + sLineBreak +
|
||||
// ' // begin' + sLineBreak +
|
||||
// ' // REPLEmit(DateTimeToStr(Now));' + sLineBreak +
|
||||
// ' // Result := THandleCommandResult.Continue;' + sLineBreak +
|
||||
// ' // Handled := True;' + sLineBreak +
|
||||
// ' // end;' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// sLineBreak +
|
||||
' LServer := TIdHTTPWebBrokerBridge.Create(nil);' + sLineBreak +
|
||||
' try' + sLineBreak +
|
||||
' LServer.OnParseAuthentication := TMVCParseAuthentication.OnParseAuthentication;' + sLineBreak +
|
||||
' LServer.DefaultPort := APort;' + sLineBreak +
|
||||
' LServer.KeepAlive := True;' + sLineBreak +
|
||||
sLineBreak +
|
||||
' LServer.KeepAlive := True;' + sLineBreak + sLineBreak +
|
||||
' { more info about MaxConnections' + sLineBreak +
|
||||
' http://ww2.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=index.html }' + sLineBreak +
|
||||
' LServer.MaxConnections := 0;' + sLineBreak +
|
||||
@ -113,34 +88,11 @@ resourcestring
|
||||
sLineBreak +
|
||||
// ' WriteLn(''Write "quit" or "exit" to shutdown the server'');' + sLineBreak +
|
||||
' LServer.Active := True;' + sLineBreak +
|
||||
' WriteLn(''Listening on port '', APort);' + sLineBreak +
|
||||
' WriteLn(''CTRL+C to shutdown the server'');' + sLineBreak +
|
||||
' WaitForTerminationSignal; ' + sLineBreak +
|
||||
// ' repeat' + sLineBreak +
|
||||
// ' if LCmd.IsEmpty then' + sLineBreak +
|
||||
// ' begin' + sLineBreak +
|
||||
// ' Write(''-> '');' + sLineBreak +
|
||||
// ' ReadLn(LCmd)' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// ' try' + sLineBreak +
|
||||
// ' case HandleCommand(LCmd.ToLower, LServer, LCustomHandler) of' + sLineBreak +
|
||||
// ' THandleCommandResult.Continue:' + sLineBreak +
|
||||
// ' begin' + sLineBreak +
|
||||
// ' Continue;' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// ' THandleCommandResult.Break:' + sLineBreak +
|
||||
// ' begin' + sLineBreak +
|
||||
// ' Break;' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// ' THandleCommandResult.Unknown:' + sLineBreak +
|
||||
// ' begin' + sLineBreak +
|
||||
// ' REPLEmit(''Unknown command: '' + LCmd);' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// ' finally' + sLineBreak +
|
||||
// ' LCmd := '''';' + sLineBreak +
|
||||
// ' end;' + sLineBreak +
|
||||
// ' until False;' + sLineBreak +
|
||||
// '' + sLineBreak +
|
||||
' EnterInShutdownState; ' + sLineBreak +
|
||||
' LServer.Active := False; ' + sLineBreak +
|
||||
' finally' + sLineBreak +
|
||||
' LServer.Free;' + sLineBreak +
|
||||
' end;' + sLineBreak +
|
||||
@ -323,6 +275,9 @@ resourcestring
|
||||
' System.IOUtils, ' + sLineBreak +
|
||||
' MVCFramework.Commons, ' + sLineBreak +
|
||||
' MVCFramework.Middleware.StaticFiles, ' + sLineBreak +
|
||||
' MVCFramework.Middleware.Analytics, ' + sLineBreak +
|
||||
' MVCFramework.Middleware.Trace, ' + sLineBreak +
|
||||
' MVCFramework.Middleware.CORS, ' + sLineBreak +
|
||||
' MVCFramework.Middleware.Compression;' + sLineBreak +
|
||||
sLineBreak +
|
||||
'procedure %1:s.WebModuleCreate(Sender: TObject);' + sLineBreak +
|
||||
@ -361,15 +316,6 @@ resourcestring
|
||||
' Config[TMVCConfigKey.MaxRequestSize] := IntToStr(TMVCConstants.DEFAULT_MAX_REQUEST_SIZE);' + sLineBreak +
|
||||
' end);' + sLineBreak +
|
||||
' FMVC.AddController(%3:s);' + sLineBreak + sLineBreak +
|
||||
' // Enable the following middleware declaration if you want to' + sLineBreak +
|
||||
' // serve static files from this dmvcframework service.' + sLineBreak +
|
||||
' // The folder mapped as documentroot must exists!' + sLineBreak +
|
||||
' // FMVC.AddMiddleware(TMVCStaticFilesMiddleware.Create( ' + sLineBreak +
|
||||
' // ''/static'', ' + sLineBreak +
|
||||
' // TPath.Combine(ExtractFilePath(GetModuleName(HInstance)), ''www'')) ' + sLineBreak +
|
||||
' // ); ' + sLineBreak + sLineBreak +
|
||||
' // To enable compression (deflate, gzip) just add this middleware as the last one ' + sLineBreak +
|
||||
' FMVC.AddMiddleware(TMVCCompressionMiddleware.Create);' + sLineBreak +
|
||||
' %4:s ' + sLineBreak +
|
||||
' %5:s ' + sLineBreak +
|
||||
'end;' + sLineBreak +
|
||||
|
@ -1,11 +1,10 @@
|
||||
object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
Left = 0
|
||||
Top = 0
|
||||
Cursor = crHandPoint
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'New DMVCFramework Project Wizard'
|
||||
ClientHeight = 624
|
||||
ClientWidth = 355
|
||||
ClientHeight = 484
|
||||
ClientWidth = 596
|
||||
Color = clBtnFace
|
||||
Constraints.MinHeight = 145
|
||||
Constraints.MinWidth = 250
|
||||
@ -17,39 +16,40 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
Position = poMainFormCenter
|
||||
OnCreate = FormCreate
|
||||
DesignSize = (
|
||||
355
|
||||
624)
|
||||
596
|
||||
484)
|
||||
TextHeight = 13
|
||||
object Shape1: TShape
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 355
|
||||
Height = 126
|
||||
Width = 596
|
||||
Height = 121
|
||||
Align = alTop
|
||||
Pen.Color = clWhite
|
||||
end
|
||||
object lblWbModule: TLabel
|
||||
Left = 24
|
||||
Top = 172
|
||||
Top = 167
|
||||
Width = 114
|
||||
Height = 13
|
||||
Caption = 'WebModule Class Name'
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 24
|
||||
Top = 222
|
||||
Top = 214
|
||||
Width = 55
|
||||
Height = 13
|
||||
Caption = 'Server Port'
|
||||
end
|
||||
object Image1: TImage
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 355
|
||||
Left = 24
|
||||
Top = -1
|
||||
Width = 352
|
||||
Height = 101
|
||||
Cursor = crHandPoint
|
||||
Hint = 'Go to the DelphiMVCFramework project'
|
||||
Align = alTop
|
||||
AutoSize = True
|
||||
Center = True
|
||||
Picture.Data = {
|
||||
0954506E67496D61676589504E470D0A1A0A0000000D49484452000001600000
|
||||
00650802000000FCB9AE1C000000097048597300002E2300002E230178A53F76
|
||||
@ -375,19 +375,16 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
4F1140101111F11401041111114F1140101111F11401041111114FFD0F3B403E
|
||||
DAAF5C25370000000049454E44AE426082}
|
||||
OnClick = Image1Click
|
||||
ExplicitWidth = 352
|
||||
end
|
||||
object lblFrameworkVersion: TLabel
|
||||
Left = 89
|
||||
Top = 83
|
||||
Width = 261
|
||||
Height = 13
|
||||
Alignment = taRightJustify
|
||||
AutoSize = False
|
||||
Left = 24
|
||||
Top = 97
|
||||
Width = 106
|
||||
Height = 16
|
||||
Caption = 'X.X.X carbonara'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Height = -13
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
@ -397,19 +394,19 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
end
|
||||
object lblBook: TLabel
|
||||
AlignWithMargins = True
|
||||
Left = 11
|
||||
Top = 102
|
||||
Width = 339
|
||||
Height = 19
|
||||
Left = 283
|
||||
Top = 99
|
||||
Width = 309
|
||||
Height = 16
|
||||
Cursor = crHandPoint
|
||||
Hint = 'Go to DMVCFramework - the official guide'
|
||||
Margins.Right = 10
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
AutoSize = False
|
||||
Caption = 'DelphiMVCFramework - the official guide'
|
||||
Anchors = []
|
||||
Caption = 'Go to "DelphiMVCFramework - the official guide"'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Height = -13
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
@ -419,35 +416,32 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
OnMouseLeave = lblBookMouseLeave
|
||||
end
|
||||
object btnOK: TButton
|
||||
Left = 187
|
||||
Top = 589
|
||||
Left = 428
|
||||
Top = 449
|
||||
Width = 77
|
||||
Height = 27
|
||||
Anchors = [akRight, akBottom]
|
||||
Caption = 'OK'
|
||||
Default = True
|
||||
ModalResult = 1
|
||||
TabOrder = 4
|
||||
ExplicitTop = 604
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnCancel: TButton
|
||||
Left = 270
|
||||
Top = 589
|
||||
Left = 511
|
||||
Top = 449
|
||||
Width = 77
|
||||
Height = 27
|
||||
Anchors = [akRight, akBottom]
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 5
|
||||
ExplicitTop = 604
|
||||
TabOrder = 4
|
||||
end
|
||||
object chkAddToProjectGroup: TCheckBox
|
||||
Left = 24
|
||||
Top = 135
|
||||
Width = 307
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'Add to Existing Project Group'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
@ -455,49 +449,37 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
end
|
||||
object edtWebModuleName: TEdit
|
||||
Left = 24
|
||||
Top = 191
|
||||
Width = 310
|
||||
Top = 186
|
||||
Width = 225
|
||||
Height = 21
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
TabOrder = 1
|
||||
end
|
||||
object edtServerPort: TEdit
|
||||
Left = 24
|
||||
Top = 241
|
||||
Top = 233
|
||||
Width = 65
|
||||
Height = 21
|
||||
TabOrder = 3
|
||||
TabOrder = 2
|
||||
TextHint = '8080'
|
||||
end
|
||||
object chkAnalyticsMiddleware: TCheckBox
|
||||
Left = 212
|
||||
Top = 243
|
||||
Width = 135
|
||||
Height = 17
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Add analytics support'
|
||||
TabOrder = 2
|
||||
Visible = False
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
Top = 462
|
||||
Width = 355
|
||||
Height = 117
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Left = 279
|
||||
Top = 274
|
||||
Width = 312
|
||||
Height = 158
|
||||
BevelOuter = bvNone
|
||||
Caption = 'Panel1'
|
||||
Ctl3D = False
|
||||
ParentCtl3D = False
|
||||
ShowCaption = False
|
||||
TabOrder = 6
|
||||
TabOrder = 5
|
||||
DesignSize = (
|
||||
355
|
||||
117)
|
||||
312
|
||||
158)
|
||||
object chkJSONRPC: TCheckBox
|
||||
Left = 24
|
||||
Top = 19
|
||||
Width = 170
|
||||
Top = 15
|
||||
Width = 257
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'Create JSONRPC 2.0 end-point'
|
||||
@ -508,26 +490,26 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
end
|
||||
object GroupBoxJSONRPC: TGroupBox
|
||||
Left = 8
|
||||
Top = 42
|
||||
Width = 338
|
||||
Height = 71
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
Top = 38
|
||||
Width = 295
|
||||
Height = 108
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'JSON-RPC 2.0 Options'
|
||||
TabOrder = 1
|
||||
DesignSize = (
|
||||
338
|
||||
71)
|
||||
295
|
||||
108)
|
||||
object Label3: TLabel
|
||||
Left = 16
|
||||
Top = 22
|
||||
Top = 55
|
||||
Width = 104
|
||||
Height = 13
|
||||
Caption = 'End-Point Class Name'
|
||||
end
|
||||
object EdtJSONRPCClassName: TEdit
|
||||
Left = 16
|
||||
Top = 41
|
||||
Width = 307
|
||||
Top = 74
|
||||
Width = 264
|
||||
Height = 19
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
TabOrder = 0
|
||||
@ -537,30 +519,29 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
end
|
||||
object Panel2: TPanel
|
||||
Left = 0
|
||||
Top = 267
|
||||
Width = 355
|
||||
Height = 193
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Top = 285
|
||||
Width = 273
|
||||
Height = 198
|
||||
BevelOuter = bvNone
|
||||
Caption = 'Panel2'
|
||||
Ctl3D = False
|
||||
ParentCtl3D = False
|
||||
ShowCaption = False
|
||||
TabOrder = 7
|
||||
TabOrder = 6
|
||||
DesignSize = (
|
||||
355
|
||||
193)
|
||||
273
|
||||
198)
|
||||
object gbControllerUnitOptions: TGroupBox
|
||||
Left = 8
|
||||
Top = 27
|
||||
Width = 339
|
||||
Height = 157
|
||||
Width = 257
|
||||
Height = 162
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
Caption = 'Controller Unit Options'
|
||||
TabOrder = 0
|
||||
DesignSize = (
|
||||
339
|
||||
157)
|
||||
257
|
||||
162)
|
||||
object lblClassName: TLabel
|
||||
Left = 16
|
||||
Top = 107
|
||||
@ -578,7 +559,7 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
object chkCreateIndexMethod: TCheckBox
|
||||
Left = 16
|
||||
Top = 20
|
||||
Width = 307
|
||||
Width = 225
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'Create Index And Sample Actions'
|
||||
@ -589,7 +570,7 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
object edtClassName: TEdit
|
||||
Left = 16
|
||||
Top = 126
|
||||
Width = 307
|
||||
Width = 225
|
||||
Height = 19
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
TabOrder = 3
|
||||
@ -597,7 +578,7 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
object chkCreateActionFiltersMethods: TCheckBox
|
||||
Left = 16
|
||||
Top = 43
|
||||
Width = 307
|
||||
Width = 225
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'Create Action Filters Methods'
|
||||
@ -608,7 +589,7 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
object chkCreateCRUDMethods: TCheckBox
|
||||
Left = 16
|
||||
Top = 66
|
||||
Width = 307
|
||||
Width = 225
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'Create Sample CRUD Actions'
|
||||
@ -620,7 +601,7 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
object chkCreateControllerUnit: TCheckBox
|
||||
Left = 24
|
||||
Top = 4
|
||||
Width = 288
|
||||
Width = 206
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Caption = 'Create Controller Unit'
|
||||
@ -631,4 +612,60 @@ object frmDMVCNewProject: TfrmDMVCNewProject
|
||||
OnClick = chkCreateControllerUnitClick
|
||||
end
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
Left = 287
|
||||
Top = 147
|
||||
Width = 301
|
||||
Height = 107
|
||||
Caption = 'Middlewares'
|
||||
TabOrder = 7
|
||||
DesignSize = (
|
||||
301
|
||||
107)
|
||||
object chkAnalyticsMiddleware: TCheckBox
|
||||
Left = 16
|
||||
Top = 50
|
||||
Width = 135
|
||||
Height = 17
|
||||
Anchors = [akTop]
|
||||
Caption = 'Analytics'
|
||||
TabOrder = 0
|
||||
end
|
||||
object chkCompression: TCheckBox
|
||||
Left = 16
|
||||
Top = 24
|
||||
Width = 153
|
||||
Height = 17
|
||||
Anchors = [akTop]
|
||||
Caption = 'Compression'
|
||||
TabOrder = 1
|
||||
end
|
||||
object chkStaticFiles: TCheckBox
|
||||
Left = 16
|
||||
Top = 76
|
||||
Width = 135
|
||||
Height = 17
|
||||
Anchors = [akTop]
|
||||
Caption = 'Static Files'
|
||||
TabOrder = 2
|
||||
end
|
||||
object chkTrace: TCheckBox
|
||||
Left = 158
|
||||
Top = 50
|
||||
Width = 135
|
||||
Height = 17
|
||||
Anchors = [akTop]
|
||||
Caption = 'Tracing'
|
||||
TabOrder = 3
|
||||
end
|
||||
object chkCORS: TCheckBox
|
||||
Left = 158
|
||||
Top = 24
|
||||
Width = 135
|
||||
Height = 17
|
||||
Anchors = [akTop]
|
||||
Caption = 'CORS'
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -59,7 +59,6 @@ type
|
||||
Label2: TLabel;
|
||||
Image1: TImage;
|
||||
lblFrameworkVersion: TLabel;
|
||||
chkAnalyticsMiddleware: TCheckBox;
|
||||
Panel1: TPanel;
|
||||
chkJSONRPC: TCheckBox;
|
||||
GroupBoxJSONRPC: TGroupBox;
|
||||
@ -76,6 +75,12 @@ type
|
||||
chkCreateControllerUnit: TCheckBox;
|
||||
lblBook: TLabel;
|
||||
Shape1: TShape;
|
||||
GroupBox1: TGroupBox;
|
||||
chkAnalyticsMiddleware: TCheckBox;
|
||||
chkCompression: TCheckBox;
|
||||
chkStaticFiles: TCheckBox;
|
||||
chkTrace: TCheckBox;
|
||||
chkCORS: TCheckBox;
|
||||
procedure chkCreateControllerUnitClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure Image1Click(Sender: TObject);
|
||||
@ -96,7 +101,6 @@ type
|
||||
function GetCreateActionFiltersMethods: boolean;
|
||||
function GetServerPort: Integer;
|
||||
function GetCreateCRUDMethods: boolean;
|
||||
function GetAnalyticsSupport: boolean;
|
||||
function GetMiddlewares: TArray<String>;
|
||||
function GetCreateJSONRPCInterface: boolean;
|
||||
function GetJSONRPCClassName: String;
|
||||
@ -109,7 +113,6 @@ type
|
||||
property AddToProjectGroup: boolean read GetAddToProjectGroup;
|
||||
property CreateIndexMethod: boolean read GetCreateIndexMethod;
|
||||
property CreateCRUDMethods: boolean read GetCreateCRUDMethods;
|
||||
property AnalyticsSupport: boolean read GetAnalyticsSupport;
|
||||
property Middlewares: TArray<String> read GetMiddlewares;
|
||||
property CreateActionFiltersMethods: boolean
|
||||
read GetCreateActionFiltersMethods;
|
||||
@ -124,7 +127,7 @@ implementation
|
||||
|
||||
uses
|
||||
DMVC.Expert.CodeGen.Templates,
|
||||
MVCFramework.Commons;
|
||||
MVCFramework.Commons, System.StrUtils;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
@ -157,11 +160,6 @@ begin
|
||||
Result := chkAddToProjectGroup.Checked;
|
||||
end;
|
||||
|
||||
function TfrmDMVCNewProject.GetAnalyticsSupport: boolean;
|
||||
begin
|
||||
Result := chkAnalyticsMiddleware.Checked;
|
||||
end;
|
||||
|
||||
function TfrmDMVCNewProject.GetCreateIndexMethod: boolean;
|
||||
begin
|
||||
Result := chkCreateIndexMethod.Checked;
|
||||
@ -189,12 +187,21 @@ begin
|
||||
end;
|
||||
|
||||
function TfrmDMVCNewProject.GetMiddlewares: TArray<String>;
|
||||
const
|
||||
M_ANALYTICS = 'FMVC.AddMiddleware(TMVCAnalyticsMiddleware.Create(GetAnalyticsDefaultLogger));';
|
||||
M_STATICFILES = 'FMVC.AddMiddleware(TMVCStaticFilesMiddleware.Create(''/static'', TPath.Combine(ExtractFilePath(GetModuleName(HInstance)), ''www'')));';
|
||||
M_TRACE = 'FMVC.AddMiddleware(TMVCTraceMiddleware.Create);';
|
||||
M_COMPRESSION = 'FMVC.AddMiddleware({must be the latest middleware registered} TMVCCompressionMiddleware.Create);';
|
||||
M_CORS = 'FMVC.AddMiddleware(TMVCCORSMiddleware.Create);';
|
||||
begin
|
||||
Result := [];
|
||||
if AnalyticsSupport then
|
||||
begin
|
||||
Result := Result + ['TMVCAnalyticsMiddleware.Create(GetLoggerForAnalytics)'];
|
||||
end;
|
||||
Result := Result + [ifthen(not chkAnalyticsMiddleware.Checked, '//') + M_ANALYTICS];
|
||||
Result := Result + ['// The folder mapped as documentroot for TMVCStaticFilesMiddleware must exists!'];
|
||||
Result := Result + [ifthen(not chkStaticFiles.Checked, '//') + M_STATICFILES];
|
||||
Result := Result + [ifthen(not chkTrace.Checked, '//') + M_TRACE];
|
||||
Result := Result + [ifthen(not chkCORS.Checked, '//') + M_CORS];
|
||||
Result := Result + ['// Compression middleware must be the last in the chain'];
|
||||
Result := Result + [ifthen(not chkCompression.Checked, '//') + M_COMPRESSION];
|
||||
end;
|
||||
|
||||
function TfrmDMVCNewProject.GetServerPort: Integer;
|
||||
|
1
lib/loggerpro/.gitignore
vendored
1
lib/loggerpro/.gitignore
vendored
@ -71,3 +71,4 @@ samples/110_rest_appender_mobile/Android/
|
||||
.doit.db.dat
|
||||
unittests/Win32/PLAINDUNITX/dunitx-results.xml
|
||||
unittests/Win32/TESTINSIGHT/TestInsightSettings.ini
|
||||
*.log
|
||||
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"id": "{E35C7797-DC25-4F38-95B7-5D7133D85A2F}",
|
||||
"name": "LoggerPro",
|
||||
"license_type": "Apache 2.0",
|
||||
"license_file": "LICENSE",
|
||||
"platforms": "Win32;Win64",
|
||||
"package_compiler_min": 23,
|
||||
"package_compiler_max": 32,
|
||||
"compiler_min": 23,
|
||||
"compiler_max": 32
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"search_pathes": [{
|
||||
"pathes": ".",
|
||||
"platforms": "Win32;Win64"
|
||||
}],
|
||||
"browsing_pathes": [{
|
||||
"pathes": ".",
|
||||
"platforms": "Win32;Win64"
|
||||
}],
|
||||
"source_folders": [{
|
||||
"folder": "."
|
||||
},
|
||||
{
|
||||
"folder": "docs",
|
||||
"recursive": true
|
||||
},
|
||||
{
|
||||
"folder": "samples",
|
||||
"recursive": true
|
||||
},
|
||||
{
|
||||
"folder": "unittests",
|
||||
"recursive": true
|
||||
}]
|
||||
}
|
@ -31,8 +31,6 @@ type
|
||||
class var FConsoleAllocated: Int64; // used to ensure one and only one console is created
|
||||
class constructor Create; // allocate global vars
|
||||
class destructor Destroy;
|
||||
private
|
||||
fFormatSettings: TFormatSettings; // dealocate global vars
|
||||
protected
|
||||
procedure SetColor(const Color: Integer);
|
||||
public
|
||||
@ -58,7 +56,6 @@ const
|
||||
function AttachConsole; external kernel32 name 'AllocConsole';
|
||||
|
||||
const
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
{ FOREGROUND COLORS - CAN BE COMBINED }
|
||||
FOREGROUND_BLUE = 1; { text color blue. }
|
||||
FOREGROUND_GREEN = 2; { text color green }
|
||||
@ -77,7 +74,7 @@ end;
|
||||
|
||||
procedure TLoggerProConsoleAppender.Setup;
|
||||
begin
|
||||
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
inherited;
|
||||
if TInterlocked.read(TLoggerProConsoleAppender.FConsoleAllocated) < 2 then
|
||||
begin
|
||||
TLoggerProConsoleAppender.FLock.Enter;
|
||||
@ -119,8 +116,9 @@ begin
|
||||
TLogType.Error:
|
||||
lColor := FOREGROUND_RED or FOREGROUND_INTENSITY;
|
||||
end;
|
||||
lText := Format(DEFAULT_LOG_FORMAT, [datetimetostr(aLogItem.TimeStamp, fFormatSettings), aLogItem.ThreadID, aLogItem.LogTypeAsString, aLogItem.LogMessage,
|
||||
aLogItem.LogTag]);
|
||||
|
||||
lText := FormatLog(aLogItem);
|
||||
|
||||
TLoggerProConsoleAppender.FLock.Enter;
|
||||
try
|
||||
SetColor(lColor);
|
||||
|
@ -46,9 +46,7 @@ type
|
||||
fOnNetSendError: TOnNetSendError;
|
||||
fExtendedInfo: TLoggerProExtendedInfo;
|
||||
fEventStreamsProxy: TEventStreamsRPCProxy;
|
||||
fLogFormat: string;
|
||||
fDMSContainerAPIKey: String;
|
||||
fFormatSettings: TFormatSettings;
|
||||
fExtendedInfoData: array [low(TLogExtendedInfo) .. high(TLogExtendedInfo)] of string;
|
||||
procedure SetOnCreateJSONData(const Value: TOnCreateJSONData);
|
||||
procedure SetOnNetSendError(const Value: TOnNetSendError);
|
||||
@ -59,7 +57,6 @@ type
|
||||
procedure LoadExtendedInfo;
|
||||
function GetExtendedInfo: TJSONObject;
|
||||
protected const
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:10u][%2:-8s] %3:s {EI%4:s}[%5:s]';
|
||||
DEFAULT_EXTENDED_INFO = [TLogExtendedInfo.EIUserName, TLogExtendedInfo.EIComputerName,
|
||||
TLogExtendedInfo.EIProcessName,
|
||||
TLogExtendedInfo.EIProcessID, TLogExtendedInfo.EIDeviceID];
|
||||
@ -70,8 +67,7 @@ type
|
||||
aDMSContainerAPIKey: String;
|
||||
aEventStreamsQueueNameBase: String = 'queues.logs.';
|
||||
aLogItemAggregationType: TDMSQueueAggregationType = dmsatByTag;
|
||||
aLogExtendedInfo: TLoggerProExtendedInfo = DEFAULT_EXTENDED_INFO;
|
||||
aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||
aLogExtendedInfo: TLoggerProExtendedInfo = DEFAULT_EXTENDED_INFO); reintroduce;
|
||||
destructor Destroy; override;
|
||||
property OnCreateJSONData: TOnCreateJSONData read fOnCreateJSONData write SetOnCreateJSONData;
|
||||
property OnNetSendError: TOnNetSendError read fOnNetSendError write SetOnNetSendError;
|
||||
@ -130,8 +126,7 @@ constructor TLoggerProDMSContainerAppender.Create(
|
||||
aDMSContainerAPIKey: String;
|
||||
aEventStreamsQueueNameBase: String;
|
||||
aLogItemAggregationType: TDMSQueueAggregationType;
|
||||
aLogExtendedInfo: TLoggerProExtendedInfo;
|
||||
aLogFormat: string);
|
||||
aLogExtendedInfo: TLoggerProExtendedInfo);
|
||||
begin
|
||||
inherited Create;
|
||||
fEventStreamsProxy := aEventStreamsProxy;
|
||||
@ -139,15 +134,12 @@ begin
|
||||
fLogItemAggregationType := aLogItemAggregationType;
|
||||
if not fQueueNameBase.EndsWith('.') then
|
||||
fQueueNameBase := fQueueNameBase + '.';
|
||||
fLogFormat := aLogFormat;
|
||||
fExtendedInfo := aLogExtendedInfo;
|
||||
fDMSContainerAPIKey := aDMSContainerAPIKey;
|
||||
LoadExtendedInfo;
|
||||
end;
|
||||
|
||||
function TLoggerProDMSContainerAppender.CreateData(const SrcLogItem: TLogItem): TJSONObject;
|
||||
var
|
||||
lLog: TJSONObject;
|
||||
begin
|
||||
Result := nil;
|
||||
try
|
||||
@ -178,7 +170,7 @@ function TLoggerProDMSContainerAppender.GetDefaultLog(const aLogItem: TLogItem):
|
||||
begin
|
||||
Result := TJSONObject.Create;
|
||||
try
|
||||
Result.S['timestamp'] := datetimetostr(aLogItem.TimeStamp, fFormatSettings);
|
||||
Result.S['timestamp'] := datetimetostr(aLogItem.TimeStamp, FormatSettings);
|
||||
Result.L['tid'] := aLogItem.ThreadID;
|
||||
Result.S['type'] := aLogItem.LogTypeAsString;
|
||||
Result.S['text'] := aLogItem.LogMessage;
|
||||
@ -194,7 +186,7 @@ function TLoggerProDMSContainerAppender.GetExtendedInfo: TJSONObject;
|
||||
begin
|
||||
Result := TJSONObject.Create;
|
||||
try
|
||||
{$IFDEF MSWINDOWS}
|
||||
{$IF Defined(MSWINDOWS)}
|
||||
if TLogExtendedInfo.EIUserName in fExtendedInfo then
|
||||
begin
|
||||
Result.S['username'] := fExtendedInfoData[TLogExtendedInfo.EIUserName];
|
||||
@ -226,7 +218,7 @@ end;
|
||||
|
||||
class function TLoggerProDMSContainerAppender.GetModuleBaseName: String;
|
||||
begin
|
||||
{$IF DEFINED(MSWINDOWS)}
|
||||
{$IF Defined(MSWINDOWS)}
|
||||
Result := TPath.ChangeExtension(TPath.GetFileName(GetModuleName(HInstance)), '');
|
||||
{$ENDIF}
|
||||
{$IF Defined(Android)}
|
||||
@ -240,7 +232,7 @@ end;
|
||||
|
||||
procedure TLoggerProDMSContainerAppender.LoadExtendedInfo;
|
||||
begin
|
||||
{$IF DEFINED(MSWINDOWS)}
|
||||
{$IF Defined(MSWINDOWS)}
|
||||
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||
begin
|
||||
fExtendedInfoData[TLogExtendedInfo.EIProcessID] := IntToStr(GetCurrentProcessId);
|
||||
@ -282,7 +274,6 @@ end;
|
||||
|
||||
procedure TLoggerProDMSContainerAppender.Setup;
|
||||
begin
|
||||
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
@ -295,7 +286,6 @@ procedure TLoggerProDMSContainerAppender.InternalWriteLog(const aLogItem: TLogIt
|
||||
const aJSONObject: TJSONObject);
|
||||
var
|
||||
lRetryCount: Integer;
|
||||
lResp: IHTTPResponse;
|
||||
lJSONResp: TJSONObject;
|
||||
const
|
||||
MAX_RETRY_COUNT = 5;
|
||||
@ -331,9 +321,7 @@ end;
|
||||
|
||||
procedure TLoggerProDMSContainerAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lData: TJSONObject;
|
||||
lRetryCount: Integer;
|
||||
lResp: IHTTPResponse;
|
||||
lJSONResp: TJSONObject;
|
||||
lQueueName: string;
|
||||
const
|
||||
|
@ -26,7 +26,7 @@ type
|
||||
/// </summary>
|
||||
procedure PrepareMessage(const aLogItem: TLogItem; out aSubject, aBody: String); virtual;
|
||||
public
|
||||
constructor Create(aSMTP: TIdSMTP; const aFromAddresses, aToAddresses: String); reintroduce;
|
||||
constructor Create(aSMTP: TIdSMTP; const aFromAddresses, aToAddresses: String; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||
@ -38,12 +38,9 @@ implementation
|
||||
uses
|
||||
System.SysUtils, IdMessage;
|
||||
|
||||
const
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-8s] %3:s [%4:s]';
|
||||
|
||||
constructor TLoggerProEMailAppender.Create(aSMTP: TIdSMTP; const aFromAddresses, aToAddresses: String);
|
||||
constructor TLoggerProEMailAppender.Create(aSMTP: TIdSMTP; const aFromAddresses, aToAddresses: String; aLogFormat: string);
|
||||
begin
|
||||
inherited Create;
|
||||
inherited Create(aLogFormat);
|
||||
FSMTP := aSMTP;
|
||||
FFromAddresses := aFromAddresses;
|
||||
FToAddresses := aToAddresses;
|
||||
@ -55,14 +52,12 @@ procedure TLoggerProEMailAppender.PrepareMessage(const aLogItem: TLogItem;
|
||||
out aSubject, aBody: String);
|
||||
begin
|
||||
aSubject := 'LoggerPro ' + aLogItem.LogTypeAsString.ToUpper + ' [' + aLogItem.LogTag + ']';
|
||||
aBody := Format(DEFAULT_LOG_FORMAT, [datetimetostr(aLogItem.TimeStamp),
|
||||
aLogItem.ThreadID, aLogItem.LogTypeAsString, aLogItem.LogMessage,
|
||||
aLogItem.LogTag]);
|
||||
aBody := FormatLog(aLogItem);
|
||||
end;
|
||||
|
||||
procedure TLoggerProEMailAppender.Setup;
|
||||
begin
|
||||
//
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLoggerProEMailAppender.TearDown;
|
||||
|
@ -40,45 +40,29 @@ type
|
||||
|
||||
TFileAppenderOption = (IncludePID);
|
||||
TFileAppenderOptions = set of TFileAppenderOption;
|
||||
TFileAppenderLogRow = reference to procedure(const LogItem: TLogItem; out LogRow: string);
|
||||
|
||||
{ @abstract(The default file appender)
|
||||
To learn how to use this appender, check the sample @code(file_appender.dproj)
|
||||
{ @abstract(The base class for different file appenders)
|
||||
Do not use this class directly, but one of TLoggerProFileAppender or TLoggerProSimpleFileAppender.
|
||||
Check the sample @code(file_appender.dproj)
|
||||
}
|
||||
TLoggerProFileAppender = class(TLoggerProAppenderBase)
|
||||
TLoggerProFileAppenderBase = class(TLoggerProAppenderBase)
|
||||
private
|
||||
fFormatSettings: TFormatSettings;
|
||||
fWritersDictionary: TObjectDictionary<string, TStreamWriter>;
|
||||
fMaxBackupFileCount: Integer;
|
||||
fMaxFileSizeInKiloByte: Integer;
|
||||
fLogFormat: string;
|
||||
fLogFileNameFormat: string;
|
||||
fFileAppenderOptions: TFileAppenderOptions;
|
||||
fLogsFolder: string;
|
||||
fEncoding: TEncoding;
|
||||
fOnLogRow: TFileAppenderLogRow;
|
||||
function CreateWriter(const aFileName: string): TStreamWriter;
|
||||
procedure AddWriter(const aLogItem: TLogItem; var lWriter: TStreamWriter; var lLogFileName: string);
|
||||
procedure RotateLog(const aLogItem: TLogItem; lWriter: TStreamWriter);
|
||||
procedure RetryMove(const aFileSrc, aFileDest: string);
|
||||
protected
|
||||
function GetLogFileName(const aTag: string; const aFileNumber: Integer): string;
|
||||
procedure InternalWriteLog(const aStreamWriter: TStreamWriter; const aValue: string); inline;
|
||||
procedure WriteToStream(const aStreamWriter: TStreamWriter; const aValue: string); inline;
|
||||
procedure RotateFile(const aLogTag: string; out aNewFileName: string); virtual;
|
||||
procedure InternalWriteLog(const aStreamWriter: TStreamWriter; const aLogItem: TLogItem);
|
||||
public const
|
||||
{ @abstract(Defines the default format string used by the @link(TLoggerProFileAppender).)
|
||||
The positional parameters are the followings:
|
||||
@orderedList(
|
||||
@itemSetNumber 0
|
||||
@item TimeStamp
|
||||
@item ThreadID
|
||||
@item LogType
|
||||
@item LogMessage
|
||||
@item LogTag
|
||||
)
|
||||
}
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:10u][%2:-8s] %3:s [%4:s]';
|
||||
{ @abstract(Defines the default format string used by the @link(TLoggerProFileAppender).)
|
||||
The positional parameters are the followings:
|
||||
The positional parameters are the following:
|
||||
@orderedList(
|
||||
@item SetNumber 0
|
||||
@item ModuleName
|
||||
@ -86,30 +70,63 @@ type
|
||||
@item LogTag
|
||||
)
|
||||
}
|
||||
DEFAULT_FILENAME_FORMAT = '%s.%2.2d.%s.log';
|
||||
{ @abstract(Defines number of log file set to mantain during logs rotation) }
|
||||
DEFAULT_FILENAME_FORMAT = '%0:s.%1:2.2d.%2:s.log';
|
||||
{ @abstract(Defines number of log file set to maintain during logs rotation) }
|
||||
DEFAULT_MAX_BACKUP_FILE_COUNT = 5;
|
||||
{ @abstract(Defines the max size of each log file)
|
||||
The actual meaning is: "If the file size is > than @link(DEFAULT_MAX_FILE_SIZE_KB) then rotate logs. }
|
||||
DEFAULT_MAX_FILE_SIZE_KB = 1000;
|
||||
{ @abstract(Milliseconds to wait between the RETRY_COUNT times. }
|
||||
RETRY_DELAY = 200;
|
||||
{ @abstract(How much times we have to retry if the file is locked?. }
|
||||
{ @abstract(How many times do we have to retry if the file is locked?. }
|
||||
RETRY_COUNT = 5;
|
||||
constructor Create(aMaxBackupFileCount: Integer = DEFAULT_MAX_BACKUP_FILE_COUNT;
|
||||
aMaxFileSizeInKiloByte: Integer = DEFAULT_MAX_FILE_SIZE_KB; aLogsFolder: string = ''; aFileAppenderOptions: TFileAppenderOptions = [];
|
||||
aLogFileNameFormat: string = DEFAULT_FILENAME_FORMAT; aLogFormat: string = DEFAULT_LOG_FORMAT; aEncoding: TEncoding = nil);
|
||||
reintroduce;
|
||||
procedure Setup; override;
|
||||
end;
|
||||
|
||||
{ @abstract(The default file appender)
|
||||
This file appender separates TLogItems with different tags into a log file for each tag.
|
||||
To learn how to use this appender, check the sample @code(file_appender.dproj)
|
||||
}
|
||||
TLoggerProFileAppender = class(TLoggerProFileAppenderBase)
|
||||
private
|
||||
fWritersDictionary: TObjectDictionary<string, TStreamWriter>;
|
||||
procedure AddWriter(const aLogTag: string; var aWriter: TStreamWriter; var aLogFileName: string);
|
||||
procedure RotateLog(const aLogTag: string; aWriter: TStreamWriter);
|
||||
public
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); overload; override;
|
||||
end;
|
||||
|
||||
{ @abstract(A simple file appender)
|
||||
This file appender writes all TLogItems into a single log file.
|
||||
Combined with a @code(TLoggerProAppenderFilterImpl) you can filter out any log tags you like.
|
||||
If you want to run several TLoggerProSimpleFileAppender in parallel you have to provide a different
|
||||
LogFileFormat for each of them in the constructor in order to prevent name collisions.
|
||||
To learn how to use this appender, check the sample @code(file_appender.dproj)
|
||||
}
|
||||
TLoggerProSimpleFileAppender = class(TLoggerProFileAppenderBase)
|
||||
private const
|
||||
cDefaultLogTag = '---';
|
||||
private
|
||||
fFileWriter: TStreamWriter;
|
||||
procedure RotateLog;
|
||||
public
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); overload; override;
|
||||
property OnLogRow: TFileAppenderLogRow read fOnLogRow write fOnLogRow;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.IOUtils,
|
||||
System.StrUtils,
|
||||
System.Math,
|
||||
idGlobal
|
||||
{$IF Defined(Android)}
|
||||
,Androidapi.Helpers
|
||||
@ -118,9 +135,9 @@ uses
|
||||
{$ENDIF}
|
||||
;
|
||||
|
||||
{ TLoggerProFileAppender }
|
||||
{ TLoggerProFileAppenderBase }
|
||||
|
||||
function TLoggerProFileAppender.GetLogFileName(const aTag: string; const aFileNumber: Integer): string;
|
||||
function TLoggerProFileAppenderBase.GetLogFileName(const aTag: string; const aFileNumber: Integer): string;
|
||||
var
|
||||
lExt: string;
|
||||
lModuleName: string;
|
||||
@ -146,8 +163,10 @@ begin
|
||||
Result := TPath.Combine(lPath, lExt);
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.Setup;
|
||||
procedure TLoggerProFileAppenderBase.Setup;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
if fLogsFolder = '' then
|
||||
begin
|
||||
{$IF (Defined(MSWINDOWS) or Defined(POSIX)) and (not Defined(MOBILE))}
|
||||
@ -159,51 +178,20 @@ begin
|
||||
end;
|
||||
if not TDirectory.Exists(fLogsFolder) then
|
||||
TDirectory.CreateDirectory(fLogsFolder);
|
||||
|
||||
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
fWritersDictionary := TObjectDictionary<string, TStreamWriter>.Create([doOwnsValues]);
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.TearDown;
|
||||
begin
|
||||
fWritersDictionary.Free;
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.InternalWriteLog(const aStreamWriter: TStreamWriter; const aValue: string);
|
||||
procedure TLoggerProFileAppenderBase.WriteToStream(const aStreamWriter: TStreamWriter; const aValue: string);
|
||||
begin
|
||||
aStreamWriter.WriteLine(aValue);
|
||||
aStreamWriter.Flush;
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lWriter: TStreamWriter;
|
||||
lLogFileName: string;
|
||||
lLogRow: string;
|
||||
procedure TLoggerProFileAppenderBase.InternalWriteLog(const aStreamWriter: TStreamWriter; const aLogItem: TLogItem);
|
||||
begin
|
||||
if not fWritersDictionary.TryGetValue(aLogItem.LogTag, lWriter) then
|
||||
begin
|
||||
AddWriter(aLogItem, lWriter, lLogFileName);
|
||||
end;
|
||||
|
||||
if not Assigned(fOnLogRow) then
|
||||
begin
|
||||
InternalWriteLog(lWriter, Format(fLogFormat, [datetimetostr(aLogItem.TimeStamp, fFormatSettings), aLogItem.ThreadID,
|
||||
aLogItem.LogTypeAsString, aLogItem.LogMessage, aLogItem.LogTag]));
|
||||
end
|
||||
else
|
||||
begin
|
||||
fOnLogRow(aLogItem, lLogRow);
|
||||
InternalWriteLog(lWriter, lLogRow);
|
||||
end;
|
||||
|
||||
if lWriter.BaseStream.Size > fMaxFileSizeInKiloByte * 1024 then
|
||||
begin
|
||||
RotateLog(aLogItem, lWriter);
|
||||
end;
|
||||
WriteToStream(aStreamWriter, FormatLog(aLogItem));
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.RetryMove(const aFileSrc, aFileDest: string);
|
||||
procedure TLoggerProFileAppenderBase.RetryMove(const aFileSrc, aFileDest: string);
|
||||
var
|
||||
lRetries: Integer;
|
||||
const
|
||||
@ -233,51 +221,37 @@ begin
|
||||
raise ELoggerPro.CreateFmt('Cannot rename %s to %s', [aFileSrc, aFileDest]);
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.RotateLog(const aLogItem: TLogItem; lWriter: TStreamWriter);
|
||||
procedure TLoggerProFileAppenderBase.RotateFile(const aLogTag: string; out aNewFileName: string);
|
||||
var
|
||||
lLogFileName: string;
|
||||
lRenamedFile: string;
|
||||
I: Integer;
|
||||
lCurrentFileName: string;
|
||||
begin
|
||||
InternalWriteLog(lWriter, '#[ROTATE LOG ' + datetimetostr(Now, fFormatSettings) + ']');
|
||||
fWritersDictionary.Remove(aLogItem.LogTag);
|
||||
lLogFileName := GetLogFileName(aLogItem.LogTag, 0);
|
||||
aNewFileName := GetLogFileName(aLogTag, 0);
|
||||
// remove the last file of backup set
|
||||
lRenamedFile := GetLogFileName(aLogItem.LogTag, fMaxBackupFileCount);
|
||||
lRenamedFile := GetLogFileName(aLogTag, fMaxBackupFileCount);
|
||||
if TFile.Exists(lRenamedFile) then
|
||||
TFile.Delete(lRenamedFile);
|
||||
// shift the files names
|
||||
for I := fMaxBackupFileCount - 1 downto 1 do
|
||||
begin
|
||||
lCurrentFileName := GetLogFileName(aLogItem.LogTag, I);
|
||||
lRenamedFile := GetLogFileName(aLogItem.LogTag, I + 1);
|
||||
lCurrentFileName := GetLogFileName(aLogTag, I);
|
||||
lRenamedFile := GetLogFileName(aLogTag, I + 1);
|
||||
if TFile.Exists(lCurrentFileName) then
|
||||
RetryMove(lCurrentFileName, lRenamedFile);
|
||||
|
||||
end;
|
||||
lRenamedFile := GetLogFileName(aLogItem.LogTag, 1);
|
||||
RetryMove(lLogFileName, lRenamedFile);
|
||||
// read the writer
|
||||
AddWriter(aLogItem, lWriter, lLogFileName);
|
||||
InternalWriteLog(lWriter, '#[START LOG ' + datetimetostr(Now, fFormatSettings) + ']');
|
||||
lRenamedFile := GetLogFileName(aLogTag, 1);
|
||||
RetryMove(aNewFileName, lRenamedFile);
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.AddWriter(const aLogItem: TLogItem; var lWriter: TStreamWriter; var lLogFileName: string);
|
||||
begin
|
||||
lLogFileName := GetLogFileName(aLogItem.LogTag, 0);
|
||||
lWriter := CreateWriter(lLogFileName);
|
||||
fWritersDictionary.Add(aLogItem.LogTag, lWriter);
|
||||
end;
|
||||
|
||||
constructor TLoggerProFileAppender.Create(aMaxBackupFileCount: Integer; aMaxFileSizeInKiloByte: Integer; aLogsFolder: string;
|
||||
constructor TLoggerProFileAppenderBase.Create(aMaxBackupFileCount: Integer; aMaxFileSizeInKiloByte: Integer; aLogsFolder: string;
|
||||
aFileAppenderOptions: TFileAppenderOptions; aLogFileNameFormat: string; aLogFormat: string; aEncoding: TEncoding);
|
||||
begin
|
||||
inherited Create;
|
||||
inherited Create(ALogFormat);
|
||||
fLogsFolder := aLogsFolder;
|
||||
fMaxBackupFileCount := aMaxBackupFileCount;
|
||||
fMaxBackupFileCount:= Min(1, aMaxBackupFileCount);
|
||||
fMaxFileSizeInKiloByte := aMaxFileSizeInKiloByte;
|
||||
fLogFormat := aLogFormat;
|
||||
fLogFileNameFormat := aLogFileNameFormat;
|
||||
fFileAppenderOptions := aFileAppenderOptions;
|
||||
if Assigned(aEncoding) then
|
||||
@ -286,7 +260,7 @@ begin
|
||||
fEncoding := TEncoding.DEFAULT;
|
||||
end;
|
||||
|
||||
function TLoggerProFileAppender.CreateWriter(const aFileName: string): TStreamWriter;
|
||||
function TLoggerProFileAppenderBase.CreateWriter(const aFileName: string): TStreamWriter;
|
||||
var
|
||||
lFileStream: TFileStream;
|
||||
lFileAccessMode: Word;
|
||||
@ -329,5 +303,94 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TLoggerProFileAppender }
|
||||
|
||||
procedure TLoggerProFileAppender.AddWriter(const aLogTag:string; var aWriter: TStreamWriter; var aLogFileName: string);
|
||||
begin
|
||||
aLogFileName := GetLogFileName(aLogTag, 0);
|
||||
aWriter := CreateWriter(aLogFileName);
|
||||
fWritersDictionary.Add(aLogTag, aWriter);
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.RotateLog(const aLogTag: string; aWriter: TStreamWriter);
|
||||
var
|
||||
lLogFileName: string;
|
||||
begin
|
||||
WriteToStream(aWriter, '#[ROTATE LOG ' + datetimetostr(Now, FormatSettings) + ']');
|
||||
// remove the writer during rename
|
||||
fWritersDictionary.Remove(aLogTag);
|
||||
RotateFile(aLogTag, lLogFileName);
|
||||
// re-create the writer
|
||||
AddWriter(aLogTag, aWriter, lLogFileName);
|
||||
WriteToStream(aWriter, '#[START LOG ' + datetimetostr(Now, FormatSettings) + ']');
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
fWritersDictionary := TObjectDictionary<string, TStreamWriter>.Create([doOwnsValues]);
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.TearDown;
|
||||
begin
|
||||
fWritersDictionary.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLoggerProFileAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lWriter: TStreamWriter;
|
||||
lLogFileName:string;
|
||||
begin
|
||||
if not fWritersDictionary.TryGetValue(aLogItem.LogTag, lWriter) then
|
||||
begin
|
||||
AddWriter(aLogItem.LogTag, lWriter, lLogFileName);
|
||||
end;
|
||||
|
||||
InternalWriteLog(lWriter, aLogItem);
|
||||
|
||||
if lWriter.BaseStream.Size > fMaxFileSizeInKiloByte * 1024 then
|
||||
begin
|
||||
RotateLog(aLogItem.LogTag, lWriter);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TLoggerProSimpleFileAppender }
|
||||
|
||||
procedure TLoggerProSimpleFileAppender.RotateLog;
|
||||
var
|
||||
lLogFileName: string;
|
||||
begin
|
||||
WriteToStream(fFileWriter, '#[ROTATE LOG ' + datetimetostr(Now, FormatSettings) + ']');
|
||||
// remove the writer during rename
|
||||
fFileWriter.Free;
|
||||
RotateFile(cDefaultLogTag, lLogFileName);
|
||||
// re-create the writer
|
||||
fFileWriter := CreateWriter(GetLogFileName(cDefaultLogTag, 0));
|
||||
WriteToStream(fFileWriter, '#[START LOG ' + datetimetostr(Now, FormatSettings) + ']');
|
||||
end;
|
||||
|
||||
procedure TLoggerProSimpleFileAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
fFileWriter := CreateWriter(GetLogFileName(cDefaultLogTag, 0));
|
||||
end;
|
||||
|
||||
procedure TLoggerProSimpleFileAppender.TearDown;
|
||||
begin
|
||||
fFileWriter.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLoggerProSimpleFileAppender.WriteLog(const aLogItem: TLogItem);
|
||||
begin
|
||||
InternalWriteLog(fFileWriter, aLogItem);
|
||||
|
||||
if fFileWriter.BaseStream.Size > fMaxFileSizeInKiloByte * 1024 then
|
||||
begin
|
||||
RotateLog;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -61,10 +61,7 @@ type
|
||||
FUserName, FMachineName: string;
|
||||
FEphemeral: Boolean;
|
||||
FLastSignature: string;
|
||||
FLogFormat: string;
|
||||
FFormatSettings: TFormatSettings;
|
||||
public
|
||||
const DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-8s] %3:s [%4:s]';
|
||||
const DEFAULT_NSQ_URL = 'http://127.0.0.1:4151';
|
||||
|
||||
function GetNSQUrl: string;
|
||||
@ -96,22 +93,19 @@ type
|
||||
procedure Setup; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||
function CreateData(const SrcLogItem: TLogItem): TStream; virtual;
|
||||
function FormatLog(const aLogItem: TLogItem): string; virtual;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses System.NetEncoding;
|
||||
|
||||
constructor TLoggerProNSQAppenderBase.Create(aTopic: string=''; aEphemeral:
|
||||
Boolean = False; aNSQUrl: string=DEFAULT_NSQ_URL; aLogFormat:
|
||||
string=DEFAULT_LOG_FORMAT);
|
||||
constructor TLoggerProNSQAppenderBase.Create(aTopic: string; aEphemeral: Boolean;
|
||||
aNSQUrl: string; aLogFormat: string);
|
||||
begin
|
||||
inherited Create();
|
||||
inherited Create(aLogFormat);
|
||||
FEphemeral := aEphemeral;
|
||||
FNSQUrl := 'http://127.0.0.1:4151';
|
||||
FUserName := aNSQUrl;
|
||||
FLogFormat := aLogFormat;
|
||||
FTopic := aTopic;
|
||||
end;
|
||||
|
||||
@ -137,13 +131,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLoggerProNSQAppenderBase.FormatLog(
|
||||
const aLogItem: TLogItem): string;
|
||||
begin
|
||||
result := Format(FLogFormat, [datetimetostr(aLogItem.TimeStamp, FFormatSettings), aLogItem.ThreadID,
|
||||
aLogItem.LogTypeAsString, aLogItem.LogMessage, aLogItem.LogTag])
|
||||
end;
|
||||
|
||||
function TLoggerProNSQAppenderBase.GetNSQUrl: string;
|
||||
begin
|
||||
result := FNSQUrl;
|
||||
@ -182,7 +169,6 @@ end;
|
||||
|
||||
procedure TLoggerProNSQAppenderBase.Setup;
|
||||
begin
|
||||
FFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
@ -17,7 +17,7 @@ type
|
||||
FModuleName: string;
|
||||
{$ENDIF}
|
||||
public
|
||||
constructor Create; override;
|
||||
constructor Create(ALogFormat: string = DEFAULT_LOG_FORMAT); override;
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||
@ -34,17 +34,16 @@ uses
|
||||
{$ENDIF}
|
||||
;
|
||||
|
||||
{ TStringsLogAppender }
|
||||
const
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
{ TLoggerProOutputDebugStringAppender }
|
||||
|
||||
constructor TLoggerProOutputDebugStringAppender.Create;
|
||||
constructor TLoggerProOutputDebugStringAppender.Create(ALogFormat: string);
|
||||
begin
|
||||
inherited Create;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLoggerProOutputDebugStringAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
{$IFDEF MSWINDOWS}
|
||||
FModuleName := TPath.GetFileName(GetModuleName(HInstance));
|
||||
{$ENDIF}
|
||||
@ -55,17 +54,14 @@ begin
|
||||
// do nothing
|
||||
end;
|
||||
|
||||
procedure TLoggerProOutputDebugStringAppender.WriteLog(const aLogItem
|
||||
: TLogItem);
|
||||
procedure TLoggerProOutputDebugStringAppender.WriteLog(const aLogItem : TLogItem);
|
||||
{$IFDEF MSWINDOWS}
|
||||
var
|
||||
lLog: string;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF MSWINDOWS}
|
||||
lLog := '(' + FModuleName + ') ' + Format(DEFAULT_LOG_FORMAT,
|
||||
[datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID,
|
||||
aLogItem.LogTypeAsString, aLogItem.LogMessage, aLogItem.LogTag]);
|
||||
lLog := '(' + FModuleName + ') ' + FormatLog(aLogItem);
|
||||
OutputDebugString(PChar(lLog));
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
@ -1,4 +1,4 @@
|
||||
unit LoggerPro.RESTAppender;
|
||||
unit LoggerPro.RESTAppender;
|
||||
|
||||
interface
|
||||
|
||||
@ -13,7 +13,7 @@ type
|
||||
{
|
||||
Log appender for a REST endpoint
|
||||
Author: Daniele Teti (https://github.com/danieleteti/)
|
||||
Some ideas from NSQ appender from Stéphane "Fulgan" GROBETY (https://github.com/Fulgan/)
|
||||
Some ideas from NSQ appender from Stéphane "Fulgan" GROBETY (https://github.com/Fulgan/)
|
||||
}
|
||||
|
||||
TOnCreateData = reference to procedure(const Sender: TObject; const LogItem: TLogItem; const ExtendedInfo: TLoggerProExtendedInfo;
|
||||
@ -28,17 +28,27 @@ type
|
||||
fExtendedInfo: TLoggerProExtendedInfo;
|
||||
fContentType: string;
|
||||
fRESTUrl: string;
|
||||
fLogFormat: string;
|
||||
fFormatSettings: TFormatSettings;
|
||||
{$IFDEF MSWINDOWS}
|
||||
{.$IFDEF MSWINDOWS}
|
||||
fExtendedInfoData: array [low(TLogExtendedInfo) .. high(TLogExtendedInfo)] of string;
|
||||
{$ENDIF}
|
||||
{.$ENDIF}
|
||||
procedure SetOnCreateData(const Value: TOnCreateData);
|
||||
procedure SetOnNetSendError(const Value: TOnNetSendError);
|
||||
strict protected
|
||||
procedure LoadExtendedInfo;
|
||||
function GetExtendedInfo: string;
|
||||
protected const
|
||||
{ @abstract(Defines the default format string used by the @link(TLoggerProRESTAppender).)
|
||||
The positional parameters are the following:
|
||||
@orderedList(
|
||||
@item SetNumber 0
|
||||
@item TimeStamp
|
||||
@item ThreadID
|
||||
@item LogType
|
||||
@item LogMessage
|
||||
@item Extended Information
|
||||
@item LogTag
|
||||
)
|
||||
}
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:10u][%2:-8s] %3:s {EI%4:s}[%5:s]';
|
||||
DEFAULT_EXTENDED_INFO = [TLogExtendedInfo.EIUserName, TLogExtendedInfo.EIComputerName, TLogExtendedInfo.EIProcessName,
|
||||
TLogExtendedInfo.EIProcessID, TLogExtendedInfo.EIDeviceID];
|
||||
@ -56,7 +66,7 @@ type
|
||||
procedure TearDown; override;
|
||||
procedure Setup; override;
|
||||
function CreateData(const SrcLogItem: TLogItem): TStream; virtual;
|
||||
function FormatLog(const aLogItem: TLogItem): string; virtual;
|
||||
function FormatLog(const aLogItem: TLogItem): string; override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -108,17 +118,14 @@ end;
|
||||
constructor TLoggerProRESTAppender.Create(aRESTUrl: string = DEFAULT_REST_URL; aContentType: string = 'text/plain';
|
||||
aLogExtendedInfo: TLoggerProExtendedInfo = DEFAULT_EXTENDED_INFO; aLogFormat: string = DEFAULT_LOG_FORMAT);
|
||||
begin
|
||||
inherited Create;
|
||||
inherited Create(aLogFormat);
|
||||
fRESTUrl := aRESTUrl;
|
||||
fLogFormat := aLogFormat;
|
||||
fExtendedInfo := aLogExtendedInfo;
|
||||
fContentType := aContentType;
|
||||
LoadExtendedInfo;
|
||||
end;
|
||||
|
||||
function TLoggerProRESTAppender.CreateData(const SrcLogItem: TLogItem): TStream;
|
||||
var
|
||||
lLog: string;
|
||||
begin
|
||||
Result := nil;
|
||||
try
|
||||
@ -128,7 +135,6 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
lLog := FormatLog(SrcLogItem);
|
||||
Result := TStringStream.Create(FormatLog(SrcLogItem), TEncoding.UTF8);
|
||||
end;
|
||||
except
|
||||
@ -142,7 +148,7 @@ end;
|
||||
|
||||
function TLoggerProRESTAppender.FormatLog(const aLogItem: TLogItem): string;
|
||||
begin
|
||||
Result := Format(fLogFormat, [datetimetostr(aLogItem.TimeStamp, fFormatSettings), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||
Result := Format(LogFormat, [datetimetostr(aLogItem.TimeStamp, FormatSettings), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||
aLogItem.LogMessage, GetExtendedInfo, aLogItem.LogTag]);
|
||||
end;
|
||||
|
||||
@ -231,7 +237,6 @@ end;
|
||||
|
||||
procedure TLoggerProRESTAppender.Setup;
|
||||
begin
|
||||
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
@ -21,7 +21,7 @@ type
|
||||
FLogKeyPrefix: string;
|
||||
FMaxSize: Int64;
|
||||
public
|
||||
constructor Create(aRedis: IRedisClient; aMaxSize: Int64 = 5000; aKeyPrefix: string = 'loggerpro'); reintroduce;
|
||||
constructor Create(aRedis: IRedisClient; aMaxSize: Int64 = 5000; aKeyPrefix: string = 'loggerpro'; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||
@ -33,12 +33,9 @@ implementation
|
||||
uses
|
||||
System.SysUtils;
|
||||
|
||||
const
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-8s] %3:s [%4:s]';
|
||||
|
||||
constructor TLoggerProRedisAppender.Create(aRedis: IRedisClient; aMaxSize: Int64; aKeyPrefix: string);
|
||||
constructor TLoggerProRedisAppender.Create(aRedis: IRedisClient; aMaxSize: Int64; aKeyPrefix: string; aLogFormat: string);
|
||||
begin
|
||||
inherited Create;
|
||||
inherited Create(aLogFormat);
|
||||
FRedis := aRedis;
|
||||
FLogKeyPrefix := aKeyPrefix;
|
||||
FMaxSize := aMaxSize;
|
||||
@ -46,6 +43,7 @@ end;
|
||||
|
||||
procedure TLoggerProRedisAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
FRedis.Connect;
|
||||
end;
|
||||
|
||||
@ -74,9 +72,7 @@ var
|
||||
lText: string;
|
||||
lKey: string;
|
||||
begin
|
||||
lText := Format(DEFAULT_LOG_FORMAT, [datetimetostr(aLogItem.TimeStamp),
|
||||
aLogItem.ThreadID, aLogItem.LogTypeAsString, aLogItem.LogMessage,
|
||||
aLogItem.LogTag]);
|
||||
lText := FormatLog(aLogItem);
|
||||
lKey := FLogKeyPrefix + '::logs'; // + aLogItem.LogTypeAsString.ToLower;
|
||||
// Push the log item to the right of the list (logs:info, logs:warning, log:error)
|
||||
FRedis.RPUSH(lKey, [lText]);
|
||||
|
@ -18,8 +18,6 @@ type
|
||||
To learn how to use this appender, check the sample @code(SimpleConsole_appender.dproj)
|
||||
}
|
||||
TLoggerProSimpleConsoleAppender = class(TLoggerProAppenderBase)
|
||||
private
|
||||
FFormatSettings: TFormatSettings;
|
||||
public
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
@ -31,7 +29,7 @@ implementation
|
||||
|
||||
procedure TLoggerProSimpleConsoleAppender.Setup;
|
||||
begin
|
||||
FFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLoggerProSimpleConsoleAppender.TearDown;
|
||||
@ -40,14 +38,8 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLoggerProSimpleConsoleAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lText: string;
|
||||
ds: string;
|
||||
begin
|
||||
ds := DateTimeToStr(aLogItem.TimeStamp, FFormatSettings);
|
||||
lText := Format('[%-8s] %s [%2:-10s] %s', [aLogItem.LogTag, ds, aLogItem.LogTypeAsString, aLogItem.LogMessage],
|
||||
FFormatSettings);
|
||||
Writeln(lText);
|
||||
Writeln(FormatLog(aLogItem));
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -15,20 +15,7 @@ type
|
||||
private
|
||||
FLB: TListBox;
|
||||
FMaxLogLines: Word;
|
||||
FLogFormat: string;
|
||||
public const
|
||||
{ @abstract(Defines the default format string used by the @link(TLoggerProFileAppender).)
|
||||
The positional parameters are the followings:
|
||||
@orderedList(
|
||||
@itemSetNumber 0
|
||||
@item TimeStamp
|
||||
@item ThreadID
|
||||
@item LogType
|
||||
@item LogMessage
|
||||
@item LogTag
|
||||
)
|
||||
}
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
public
|
||||
constructor Create(aLB: TListBox; aMaxLogLines: Word = 500; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
@ -44,14 +31,14 @@ uses
|
||||
|
||||
constructor TVCLListBoxAppender.Create(aLB: TListBox; aMaxLogLines: Word; aLogFormat: string);
|
||||
begin
|
||||
inherited Create;
|
||||
FLogFormat := aLogFormat;
|
||||
inherited Create(aLogFormat);
|
||||
FLB := aLB;
|
||||
FMaxLogLines := aMaxLogLines;
|
||||
end;
|
||||
|
||||
procedure TVCLListBoxAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
TThread.Synchronize(nil,
|
||||
procedure
|
||||
begin
|
||||
@ -68,8 +55,8 @@ procedure TVCLListBoxAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lText: string;
|
||||
begin
|
||||
lText := Format(FLogFormat, [datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||
aLogItem.LogMessage, aLogItem.LogTag]);
|
||||
lText := FormatLog(aLogItem);
|
||||
|
||||
TThread.Queue(nil,
|
||||
procedure
|
||||
var
|
||||
|
@ -15,20 +15,7 @@ type
|
||||
private
|
||||
FLV: TListView;
|
||||
FMaxLogLines: Word;
|
||||
FLogFormat: string;
|
||||
public const
|
||||
{ @abstract(Defines the default format string used by the @link(TLoggerProFileAppender).)
|
||||
The positional parameters are the followings:
|
||||
@orderedList(
|
||||
@itemSetNumber 0
|
||||
@item TimeStamp
|
||||
@item ThreadID
|
||||
@item LogType
|
||||
@item LogMessage
|
||||
@item LogTag
|
||||
)
|
||||
}
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
public
|
||||
constructor Create(aLV: TListView; aMaxLogLines: Word = 500; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
@ -46,14 +33,14 @@ uses
|
||||
|
||||
constructor TVCLListViewAppender.Create(aLV: TListView; aMaxLogLines: Word; aLogFormat: string);
|
||||
begin
|
||||
inherited Create;
|
||||
FLogFormat := aLogFormat;
|
||||
inherited Create(aLogFormat);
|
||||
FLV := aLV;
|
||||
FMaxLogLines := aMaxLogLines;
|
||||
end;
|
||||
|
||||
procedure TVCLListViewAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
TThread.Synchronize(nil,
|
||||
procedure
|
||||
begin
|
||||
@ -70,8 +57,8 @@ procedure TVCLListViewAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lText: string;
|
||||
begin
|
||||
lText := Format(FLogFormat, [datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||
aLogItem.LogMessage, aLogItem.LogTag]);
|
||||
lText := FormatLog(aLogItem);
|
||||
|
||||
TThread.Queue(nil,
|
||||
procedure
|
||||
var
|
||||
|
@ -17,7 +17,7 @@ type
|
||||
FMaxLogLines: Word;
|
||||
FClearOnStartup: Boolean;
|
||||
public
|
||||
constructor Create(aMemo: TMemo; aMaxLogLines: Word = 100; aClearOnStartup: Boolean = False); reintroduce;
|
||||
constructor Create(aMemo: TMemo; aMaxLogLines: Word = 100; aClearOnStartup: Boolean = False; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||
procedure Setup; override;
|
||||
procedure TearDown; override;
|
||||
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||
@ -30,14 +30,11 @@ uses
|
||||
Winapi.Windows,
|
||||
Winapi.Messages;
|
||||
|
||||
const
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
{ TVCLMemoLogAppender }
|
||||
|
||||
{ TVCLMemoLogAppender }
|
||||
|
||||
constructor TVCLMemoLogAppender.Create(aMemo: TMemo; aMaxLogLines: Word; aClearOnStartup: Boolean);
|
||||
constructor TVCLMemoLogAppender.Create(aMemo: TMemo; aMaxLogLines: Word; aClearOnStartup: Boolean; aLogFormat: string);
|
||||
begin
|
||||
inherited Create;
|
||||
inherited Create(aLogFormat);
|
||||
FMemo := aMemo;
|
||||
FMaxLogLines := aMaxLogLines;
|
||||
FClearOnStartup := aClearOnStartup;
|
||||
@ -45,6 +42,7 @@ end;
|
||||
|
||||
procedure TVCLMemoLogAppender.Setup;
|
||||
begin
|
||||
inherited;
|
||||
if FClearOnStartup then
|
||||
begin
|
||||
TThread.Synchronize(nil,
|
||||
@ -64,8 +62,12 @@ procedure TVCLMemoLogAppender.WriteLog(const aLogItem: TLogItem);
|
||||
var
|
||||
lText: string;
|
||||
begin
|
||||
lText := Format(DEFAULT_LOG_FORMAT, [datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID, aLogItem.LogTypeAsString, aLogItem.LogMessage,
|
||||
aLogItem.LogTag]);
|
||||
if Assigned(FMemo) then
|
||||
begin
|
||||
if FMemo.owner = nil then exit;
|
||||
end;
|
||||
|
||||
lText := FormatLog(aLogItem);
|
||||
TThread.Queue(nil,
|
||||
procedure
|
||||
begin
|
||||
|
@ -12,6 +12,20 @@ uses
|
||||
System.Classes,
|
||||
ThreadSafeQueueU;
|
||||
|
||||
const
|
||||
{ @abstract(Defines the default format string used by the @link(TLoggerProAppenderBase).)
|
||||
The positional parameters are the followings:
|
||||
@orderedList(
|
||||
@itemSetNumber 0
|
||||
@item TimeStamp
|
||||
@item ThreadID
|
||||
@item LogType
|
||||
@item LogMessage
|
||||
@item LogTag
|
||||
)
|
||||
}
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
|
||||
var
|
||||
DefaultLoggerProMainQueueSize: Cardinal = 50000;
|
||||
DefaultLoggerProAppenderQueueSize: Cardinal = 50000;
|
||||
@ -107,7 +121,20 @@ type
|
||||
TAppenderQueue = class(TThreadSafeQueue<TLogItem>)
|
||||
end;
|
||||
|
||||
ILogWriter = interface
|
||||
ICustomLogWriter = interface
|
||||
['{8BC2F462-E2A3-4117-BE1F-03EB31997BB4}']
|
||||
function GetAppendersClassNames: TArray<string>;
|
||||
function GetAppenders(const aIndex: Integer): ILogAppender;
|
||||
property Appenders[const aIndex: Integer]: ILogAppender read GetAppenders;
|
||||
procedure AddAppender(const aAppenders: ILogAppender);
|
||||
procedure DelAppender(const aAppenders: ILogAppender);
|
||||
function AppendersCount(): Integer;
|
||||
|
||||
// Base logging method
|
||||
procedure Log(const aType: TLogType; const aMessage: string; const aTag: string); overload;
|
||||
end;
|
||||
|
||||
ILogWriter = interface(ICustomLogWriter)
|
||||
['{A717A040-4493-458F-91B2-6F6E2AFB496F}']
|
||||
procedure Debug(const aMessage: string; const aTag: string); overload;
|
||||
procedure Debug(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||
@ -128,13 +155,6 @@ type
|
||||
procedure Log(const aType: TLogType; const aMessage: string; const aTag: string); overload;
|
||||
procedure Log(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string); overload;
|
||||
procedure LogFmt(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string); deprecated;
|
||||
|
||||
function GetAppendersClassNames: TArray<string>;
|
||||
function GetAppenders(const Index: Integer): ILogAppender;
|
||||
property Appenders[const index: Integer]: ILogAppender read GetAppenders;
|
||||
procedure AddAppender(const aAppenders: ILogAppender);
|
||||
procedure DelAppender(const aAppenders: ILogAppender);
|
||||
function AppendersCount(): Integer;
|
||||
end;
|
||||
|
||||
TLogAppenderList = TList<ILogAppender>;
|
||||
@ -203,22 +223,32 @@ type
|
||||
function _Release: Integer; stdcall;
|
||||
end;
|
||||
|
||||
TLogWriter = class(TLoggerProInterfacedObject, ILogWriter)
|
||||
private
|
||||
TCustomLogWriter = class(TLoggerProInterfacedObject, ICustomLogWriter)
|
||||
strict private
|
||||
FLoggerThread: TLoggerThread;
|
||||
FLogAppenders: TLogAppenderList;
|
||||
FFreeAllowed: Boolean;
|
||||
FLogLevel: TLogType;
|
||||
procedure Initialize(aEventsHandler: TLoggerProEventsHandler);
|
||||
function GetAppendersClassNames: TArray<string>;
|
||||
protected
|
||||
procedure Initialize(const aEventsHandler: TLoggerProEventsHandler);
|
||||
public
|
||||
function GetAppenders(const Index: Integer): ILogAppender;
|
||||
constructor Create(const aLogLevel: TLogType = TLogType.Debug); overload;
|
||||
constructor Create(const aLogAppenders: TLogAppenderList; const aLogLevel: TLogType = TLogType.Debug); overload;
|
||||
destructor Destroy; override;
|
||||
|
||||
function GetAppenders(const aIndex: Integer): ILogAppender;
|
||||
procedure AddAppender(const aAppender: ILogAppender);
|
||||
procedure DelAppender(const aAppender: ILogAppender);
|
||||
function AppendersCount(): Integer;
|
||||
constructor Create(aLogLevel: TLogType = TLogType.Debug); overload;
|
||||
constructor Create(aLogAppenders: TLogAppenderList; aLogLevel: TLogType = TLogType.Debug); overload;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Log(const aType: TLogType; const aMessage: string; const aTag: string); overload;
|
||||
end;
|
||||
|
||||
TLogWriter = class(TCustomLogWriter, ILogWriter)
|
||||
private
|
||||
protected
|
||||
public
|
||||
procedure Debug(const aMessage: string; const aTag: string); overload;
|
||||
procedure Debug(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||
procedure DebugFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
@ -235,19 +265,27 @@ type
|
||||
procedure Error(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||
procedure ErrorFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
|
||||
procedure Log(const aType: TLogType; const aMessage: string; const aTag: string); overload;
|
||||
procedure Log(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string); overload;
|
||||
procedure LogFmt(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string);
|
||||
end;
|
||||
|
||||
TOnAppenderLogRow = reference to procedure(const LogItem: TLogItem; out LogRow: string);
|
||||
|
||||
TLoggerProAppenderBase = class abstract(TInterfacedObject, ILogAppender)
|
||||
private
|
||||
FLogLevel: TLogType;
|
||||
FEnabled: Boolean;
|
||||
FLastErrorTimeStamp: TDateTime;
|
||||
FOnLogRow: TOnAppenderLogRow;
|
||||
FLogFormat: string;
|
||||
FFormatSettings: TFormatSettings;
|
||||
protected
|
||||
property LogFormat: string read FLogFormat;
|
||||
property FormatSettings: TFormatSettings read FFormatSettings;
|
||||
public
|
||||
constructor Create; virtual;
|
||||
procedure Setup; virtual; abstract;
|
||||
constructor Create(ALogFormat: string = DEFAULT_LOG_FORMAT); virtual;
|
||||
procedure Setup; virtual;
|
||||
function FormatLog(const ALogItem: TLogItem): string; virtual;
|
||||
procedure WriteLog(const aLogItem: TLogItem); virtual; abstract;
|
||||
procedure TearDown; virtual; abstract;
|
||||
procedure TryToRestart(var Restarted: Boolean); virtual;
|
||||
@ -256,6 +294,7 @@ type
|
||||
procedure SetLastErrorTimeStamp(const Value: TDateTime);
|
||||
function GetLastErrorTimeStamp: TDateTime;
|
||||
property LogLevel: TLogType read GetLogLevel write SetLogLevel;
|
||||
property OnLogRow: TOnAppenderLogRow read FOnLogRow write FOnLogRow;
|
||||
end;
|
||||
|
||||
{ @abstract(Builds a new ILogWriter instance. Call this global function to start logging like a pro.)
|
||||
@ -353,78 +392,50 @@ begin
|
||||
TLogWriter(Result).Initialize(aEventsHandlers);
|
||||
end;
|
||||
|
||||
{ TLogger.TLogWriter }
|
||||
{ TLogger.TCustomLogWriter }
|
||||
|
||||
function TLogWriter.AppendersCount: Integer;
|
||||
function TCustomLogWriter.AppendersCount: Integer;
|
||||
begin
|
||||
Result := Self.FLogAppenders.Count;
|
||||
end;
|
||||
|
||||
constructor TLogWriter.Create(aLogAppenders: TLogAppenderList; aLogLevel: TLogType);
|
||||
constructor TCustomLogWriter.Create(const aLogAppenders: TLogAppenderList; const aLogLevel: TLogType = TLogType.Debug);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FFreeAllowed := False;
|
||||
FLogAppenders := aLogAppenders;
|
||||
FLogLevel := aLogLevel;
|
||||
end;
|
||||
|
||||
constructor TLogWriter.Create(aLogLevel: TLogType);
|
||||
constructor TCustomLogWriter.Create(const aLogLevel: TLogType = TLogType.Debug);
|
||||
begin
|
||||
Create(TLogAppenderList.Create, aLogLevel);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Debug(const aMessage, aTag: string);
|
||||
begin
|
||||
Log(TLogType.Debug, aMessage, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Debug(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Log(TLogType.Debug, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.DebugFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Debug(aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
destructor TLogWriter.Destroy;
|
||||
destructor TCustomLogWriter.Destroy;
|
||||
begin
|
||||
FLoggerThread.Terminate;
|
||||
FLoggerThread.WaitFor;
|
||||
FLoggerThread.Free;
|
||||
FLogAppenders.Free;
|
||||
inherited;
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Error(const aMessage, aTag: string);
|
||||
function TCustomLogWriter.GetAppenders(const aIndex: Integer): ILogAppender;
|
||||
begin
|
||||
Log(TLogType.Error, aMessage, aTag);
|
||||
Result := Self.FLogAppenders[aIndex];
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Error(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Log(TLogType.Error, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.ErrorFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Error(aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
function TLogWriter.GetAppenders(const Index: Integer): ILogAppender;
|
||||
begin
|
||||
Result := Self.FLogAppenders[index];
|
||||
end;
|
||||
|
||||
procedure TLogWriter.AddAppender(const aAppender: ILogAppender);
|
||||
procedure TCustomLogWriter.AddAppender(const aAppender: ILogAppender);
|
||||
begin
|
||||
Self.FLoggerThread.FAppenders.Add(aAppender);
|
||||
Self.FLogAppenders.Add(aAppender);
|
||||
Self.FLoggerThread.FAppendersDecorators.Add(TLoggerThread.TAppenderAdapter.Create(aAppender));
|
||||
end;
|
||||
|
||||
procedure TLogWriter.DelAppender(const aAppender: ILogAppender);
|
||||
procedure TCustomLogWriter.DelAppender(const aAppender: ILogAppender);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
@ -436,12 +447,12 @@ begin
|
||||
if i >= 0 then
|
||||
Self.FLogAppenders.Delete(i);
|
||||
|
||||
for I := 0 to Self.FLoggerThread.FAppendersDecorators.Count - 1 do
|
||||
for i := 0 to Self.FLoggerThread.FAppendersDecorators.Count - 1 do
|
||||
if Self.FLoggerThread.FAppendersDecorators[i].FLogAppender = aAppender then
|
||||
Self.FLoggerThread.FAppendersDecorators.Delete(i);
|
||||
end;
|
||||
|
||||
function TLogWriter.GetAppendersClassNames: TArray<string>;
|
||||
function TCustomLogWriter.GetAppendersClassNames: TArray<string>;
|
||||
var
|
||||
I: Cardinal;
|
||||
begin
|
||||
@ -457,22 +468,15 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Info(const aMessage, aTag: string);
|
||||
procedure TCustomLogWriter.Initialize(const aEventsHandler: TLoggerProEventsHandler);
|
||||
begin
|
||||
Log(TLogType.Info, aMessage, aTag);
|
||||
FLoggerThread := TLoggerThread.Create(FLogAppenders);
|
||||
|
||||
FLoggerThread.EventsHandlers := aEventsHandler;
|
||||
FLoggerThread.Start;
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Info(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Log(TLogType.Info, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.InfoFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Info(aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Log(const aType: TLogType; const aMessage, aTag: string);
|
||||
procedure TCustomLogWriter.Log(const aType: TLogType; const aMessage, aTag: string);
|
||||
var
|
||||
lLogItem: TLogItem;
|
||||
begin
|
||||
@ -492,6 +496,53 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TLogger.TLogWriter }
|
||||
|
||||
procedure TLogWriter.Debug(const aMessage, aTag: string);
|
||||
begin
|
||||
Log(TLogType.Debug, aMessage, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Debug(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Log(TLogType.Debug, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.DebugFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Debug(aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Error(const aMessage, aTag: string);
|
||||
begin
|
||||
Log(TLogType.Error, aMessage, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Error(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Log(TLogType.Error, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.ErrorFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Error(aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Info(const aMessage, aTag: string);
|
||||
begin
|
||||
Log(TLogType.Info, aMessage, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Info(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Log(TLogType.Info, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.InfoFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||
begin
|
||||
Info(aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Log(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string);
|
||||
begin
|
||||
Log(aType, Format(aMessage, aParams), aTag);
|
||||
@ -502,12 +553,6 @@ begin
|
||||
Log(aType, aMessage, aParams, aTag);
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Initialize(aEventsHandler: TLoggerProEventsHandler);
|
||||
begin
|
||||
FLoggerThread := TLoggerThread.Create(FLogAppenders);
|
||||
FLoggerThread.EventsHandlers := aEventsHandler;
|
||||
FLoggerThread.Start;
|
||||
end;
|
||||
|
||||
procedure TLogWriter.Warn(const aMessage, aTag: string);
|
||||
begin
|
||||
@ -720,11 +765,22 @@ end;
|
||||
|
||||
{ TLoggerProAppenderBase }
|
||||
|
||||
constructor TLoggerProAppenderBase.Create;
|
||||
constructor TLoggerProAppenderBase.Create(ALogFormat: string);
|
||||
begin
|
||||
inherited;
|
||||
inherited Create;
|
||||
Self.FEnabled := true;
|
||||
Self.FLogLevel := TLogType.Debug;
|
||||
Self.FLogFormat := ALogFormat;
|
||||
Self.FOnLogRow := nil;
|
||||
end;
|
||||
|
||||
function TLoggerProAppenderBase.FormatLog(const ALogItem: TLogItem): string;
|
||||
begin
|
||||
if Assigned(FOnLogRow) then
|
||||
FOnLogRow(ALogItem, Result)
|
||||
else
|
||||
Result := Format(FLogFormat, [DateTimeToStr(ALogItem.TimeStamp, FFormatSettings),
|
||||
ALogItem.ThreadID, ALogItem.LogTypeAsString, ALogItem.LogMessage, ALogItem.LogTag]);
|
||||
end;
|
||||
|
||||
function TLoggerProAppenderBase.GetLastErrorTimeStamp: TDateTime;
|
||||
@ -747,6 +803,11 @@ begin
|
||||
FLogLevel := Value;
|
||||
end;
|
||||
|
||||
procedure TLoggerProAppenderBase.Setup;
|
||||
begin
|
||||
FFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||
end;
|
||||
|
||||
procedure TLoggerProAppenderBase.TryToRestart(var Restarted: Boolean);
|
||||
begin
|
||||
Restarted := False;
|
||||
|
@ -20,6 +20,19 @@ LoggerPro is compatibile with
|
||||
- Delphi XE2
|
||||
|
||||
|
||||
## What's new in 1.4.0
|
||||
|
||||
- Improved VCL and FMX visual appenders
|
||||
- Appenders can be added and removed programmatically
|
||||
- Added packages for latest versions of Delphi
|
||||
- Improved algorithm used to handle slow consumers
|
||||
- Added [DMSContainer's EventStreams](http://dmscontainer.bittimeprofessionals.com/) Appender
|
||||
- Added very basic console appender that assumes is running from console in order to provide simple Linux console logging
|
||||
- FIX [Issue 50](https://github.com/danieleteti/loggerpro/issues/50)
|
||||
- New filtering log file appender that allows to pick individual tags to be written into a file.
|
||||
- FIX [Issue 57](https://github.com/danieleteti/loggerpro/issues/57)
|
||||
- FIX [Issue 60](https://github.com/danieleteti/loggerpro/issues/60)
|
||||
|
||||
## What's new in 1.3.2
|
||||
|
||||
- Added support for Android API level 26 in mobile demo
|
||||
|
@ -1,2 +1,2 @@
|
||||
VERSION 1_3_3
|
||||
BUILD DATETIME 2020-05-14T19:08:39.337540
|
||||
VERSION 1.4.3
|
||||
BUILD DATETIME : 2022-08-05T14:24:36.571140
|
||||
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Classes, Interfaces, Objects and Records</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Classes, Interfaces, Objects and Records</h1>
|
||||
<table class="itemstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemunit">Unit</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ELoggerPro.html">ELoggerPro</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ILogAppender.html">ILogAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p>Interface implemented by all the classes used as appenders</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ILogWriter.html">ILogWriter</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html">TLoggerProConsoleAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.ConsoleAppender.html">LoggerPro.ConsoleAppender</a></td>
|
||||
<td class="itemdesc"><p>Logs to the console using 4 different colors for the different logs level</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.TLoggerProFileAppender.html">TLoggerProFileAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p>The default file appender</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html">TLoggerProOutputDebugStringAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.OutputDebugStringAppender.html">LoggerPro.OutputDebugStringAppender</a></td>
|
||||
<td class="itemdesc"><p>This appenders sends logs to the <code>OutputDebugString</code> function on Windows OSes</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLoggerThread.html">TLoggerThread</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLogItem.html">TLogItem</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p>Represent the single log item</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLogWriter.html">TLogWriter</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html">TVCLMemoLogAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.VCLMemoAppender.html">LoggerPro.VCLMemoAppender</a></td>
|
||||
<td class="itemdesc"><p>Appends formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TMemo in a VCL application</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Constants</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Constants</h1>
|
||||
<p>
|
||||
The units do not contain any constants.</p>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,39 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Functions and Procedures</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Functions and Procedures</h1>
|
||||
<table class="itemstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemunit">Unit</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#BuildLogWriter">BuildLogWriter</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p>Builds a new ILogWriter instance. Call this global function to start logging like a pro.</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.GlobalLogger.html#Log">Log</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.GlobalLogger.html">LoggerPro.GlobalLogger</a></td>
|
||||
<td class="itemdesc"><p>The global logger. Just uses <code>Logger.GlobalLogger</code> and you can start to log using <code>Log</code> function.</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.GlobalLogger.html#ReleaseGlobalLogger">ReleaseGlobalLogger</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.GlobalLogger.html">LoggerPro.GlobalLogger</a></td>
|
||||
<td class="itemdesc"><p>Use only inside DLL because dll unloading is not a safe place to shutdown threads, so call this before unload DLL</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,144 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Identifiers</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Identifiers</h1>
|
||||
<table class="itemstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemunit">Unit</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#BuildLogWriter">BuildLogWriter</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p>Builds a new ILogWriter instance. Call this global function to start logging like a pro.</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#DefaultLoggerProAppenderQueueSize">DefaultLoggerProAppenderQueueSize</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#DefaultLoggerProMainQueueSize">DefaultLoggerProMainQueueSize</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ELoggerPro.html">ELoggerPro</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ILogAppender.html">ILogAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p>Interface implemented by all the classes used as appenders</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ILogWriter.html">ILogWriter</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.GlobalLogger.html#Log">Log</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.GlobalLogger.html">LoggerPro.GlobalLogger</a></td>
|
||||
<td class="itemdesc"><p>The global logger. Just uses <code>Logger.GlobalLogger</code> and you can start to log using <code>Log</code> function.</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.GlobalLogger.html#ReleaseGlobalLogger">ReleaseGlobalLogger</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.GlobalLogger.html">LoggerPro.GlobalLogger</a></td>
|
||||
<td class="itemdesc"><p>Use only inside DLL because dll unloading is not a safe place to shutdown threads, so call this before unload DLL</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.html#TFileAppenderOption">TFileAppenderOption</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p>Logs to file using one different file for each different TAG used.</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.html#TFileAppenderOptions">TFileAppenderOptions</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogErrorAction">TLogErrorAction</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogErrorReason">TLogErrorReason</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLoggerProAppenderErrorEvent">TLoggerProAppenderErrorEvent</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html">TLoggerProConsoleAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.ConsoleAppender.html">LoggerPro.ConsoleAppender</a></td>
|
||||
<td class="itemdesc"><p>Logs to the console using 4 different colors for the different logs level</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.TLoggerProFileAppender.html">TLoggerProFileAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p>The default file appender</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html">TLoggerProOutputDebugStringAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.OutputDebugStringAppender.html">LoggerPro.OutputDebugStringAppender</a></td>
|
||||
<td class="itemdesc"><p>This appenders sends logs to the <code>OutputDebugString</code> function on Windows OSes</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLoggerThread.html">TLoggerThread</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLogItem.html">TLogItem</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p>Represent the single log item</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogType">TLogType</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.TLogWriter.html">TLogWriter</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html">TVCLMemoLogAppender</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.VCLMemoAppender.html">LoggerPro.VCLMemoAppender</a></td>
|
||||
<td class="itemdesc"><p>Appends formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TMemo in a VCL application</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,59 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Types</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Types</h1>
|
||||
<table class="itemstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemunit">Unit</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.html#TFileAppenderOption">TFileAppenderOption</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p>Logs to file using one different file for each different TAG used.</p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.html#TFileAppenderOptions">TFileAppenderOptions</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogErrorAction">TLogErrorAction</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogErrorReason">TLogErrorReason</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLoggerProAppenderErrorEvent">TLoggerProAppenderErrorEvent</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#TLogType">TLogType</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,47 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Units</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Units</h1>
|
||||
<table class="unitstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ConsoleAppender.html">LoggerPro.ConsoleAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.GlobalLogger.html">LoggerPro.GlobalLogger</a></td>
|
||||
<td class="itemdesc"><p>Contains the global logger as a thread safe singleton</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.OutputDebugStringAppender.html">LoggerPro.OutputDebugStringAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.VCLMemoAppender.html">LoggerPro.VCLMemoAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Variables</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Variables</h1>
|
||||
<table class="itemstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemunit">Unit</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#DefaultLoggerProAppenderQueueSize">DefaultLoggerProAppenderQueueSize</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html#DefaultLoggerProMainQueueSize">DefaultLoggerProMainQueueSize</a></td>
|
||||
<td class="itemunit"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,37 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: Class Hierarchy</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">Class Hierarchy</h1>
|
||||
<ul class="hierarchylevel">
|
||||
<li>IInterface<ul class="hierarchylevel">
|
||||
<li><a class="bold" href="LoggerPro.ILogAppender.html">ILogAppender</a><li><a class="bold" href="LoggerPro.ILogWriter.html">ILogWriter</a></ul>
|
||||
</li>
|
||||
<li>TInterfacedObject<ul class="hierarchylevel">
|
||||
<li><a class="bold" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a><ul class="hierarchylevel">
|
||||
<li><a class="bold" href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html">TLoggerProConsoleAppender</a><li><a class="bold" href="LoggerPro.FileAppender.TLoggerProFileAppender.html">TLoggerProFileAppender</a><li><a class="bold" href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html">TLoggerProOutputDebugStringAppender</a><li><a class="bold" href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html">TVCLMemoLogAppender</a></ul>
|
||||
</li>
|
||||
<li><a class="bold" href="LoggerPro.TLogWriter.html">TLogWriter</a></ul>
|
||||
</li>
|
||||
<li>TObject<ul class="hierarchylevel">
|
||||
<li>Exception<ul class="hierarchylevel">
|
||||
<li><a class="bold" href="LoggerPro.ELoggerPro.html">ELoggerPro</a></ul>
|
||||
</li>
|
||||
<li><a class="bold" href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a><li><a class="bold" href="LoggerPro.TLogItem.html">TLogItem</a><li>TThread<ul class="hierarchylevel">
|
||||
<li><a class="bold" href="LoggerPro.TLoggerThread.html">TLoggerThread</a></ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,92 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.ConsoleAppender: Class TLoggerProConsoleAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLoggerProConsoleAppender"></a><h1 class="cio">Class TLoggerProConsoleAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.ConsoleAppender.html">LoggerPro.ConsoleAppender</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLoggerProConsoleAppender = class(<a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
Logs to the console using 4 different colors for the different logs level</p>
|
||||
<p>
|
||||
To learn how to use this appender, check the sample <code>console_appender.dproj</code> </p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="ancestor"><a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a></li>
|
||||
<li class="thisitem">TLoggerProConsoleAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html#Create">Create</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html#Setup">Setup</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html#TearDown">TearDown</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); override;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<h2 class="authors">Author</h2>
|
||||
<ul class="authors">
|
||||
<li>Daniele Teti - <a href="mailto:d.teti@bittime.it">d.teti@bittime.it</a></li>
|
||||
</ul>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.ConsoleAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="unit">Unit LoggerPro.ConsoleAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td>Functions and Procedures</td><td>Types</td><td>Constants</td><td>Variables</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li><a href="LoggerPro.html">LoggerPro</a></li><li>System.Classes</li><li>Vcl.StdCtrls</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
|
||||
<table class="classestable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.ConsoleAppender.TLoggerProConsoleAppender.html"><code>TLoggerProConsoleAppender</code></a></td>
|
||||
<td class="itemdesc">Logs to the console using 4 different colors for the different logs level</td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,29 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Class ELoggerPro</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="ELoggerPro"></a><h1 class="cio">Class ELoggerPro</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td>Methods</td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type ELoggerPro = class(Exception)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">Exception</li>
|
||||
<li class="thisitem">ELoggerPro</li></ul>Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,148 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.FileAppender: Class TLoggerProFileAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLoggerProFileAppender"></a><h1 class="cio">Class TLoggerProFileAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td><a class="section" href="#PasDoc-Fields">Fields</a></td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLoggerProFileAppender = class(<a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
The default file appender</p>
|
||||
<p>
|
||||
To learn how to use this appender, check the sample <code>file_appender.dproj</code></p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="ancestor"><a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a></li>
|
||||
<li class="thisitem">TLoggerProFileAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Fields"></a><h3 class="summary">Fields</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>internal const <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_LOG_FORMAT">DEFAULT_LOG_FORMAT</a></b> = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>internal const <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_BACKUP_FILE_COUNT">DEFAULT_MAX_BACKUP_FILE_COUNT</a></b> = 5;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>internal const <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_FILE_SIZE_KB">DEFAULT_MAX_FILE_SIZE_KB</a></b> = 1000;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#Create">Create</a></b>(aMaxBackupFileCount : Integer = <a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_BACKUP_FILE_COUNT">DEFAULT_MAX_BACKUP_FILE_COUNT</a>; aMaxFileSizeInKiloByte: Integer = <a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_FILE_SIZE_KB">DEFAULT_MAX_FILE_SIZE_KB</a>; aLogsFolder: string = ''; aFileAppenderOptions: <a href="LoggerPro.FileAppender.html#TFileAppenderOptions">TFileAppenderOptions</a> = []; aLogFormat: string = <a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_LOG_FORMAT">DEFAULT_LOG_FORMAT</a>); reintroduce;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#Setup">Setup</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#TearDown">TearDown</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); overload; override;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Fields</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="DEFAULT_LOG_FORMAT"></a><code>internal const <b>DEFAULT_LOG_FORMAT</b> = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
Defines the default format string used by the <a class="normal" href="LoggerPro.FileAppender.TLoggerProFileAppender.html">TLoggerProFileAppender</a>.</p>
|
||||
<p>
|
||||
The positional parameters are the followings: </p>
|
||||
|
||||
<ol class="paragraph_spacing">
|
||||
<li value="0"><p>TimeStamp</p></li>
|
||||
<li value="1"><p>ThreadID</p></li>
|
||||
<li value="2"><p>LogType</p></li>
|
||||
<li value="3"><p>LogMessage</p></li>
|
||||
<li value="4"><p>LogTag</p></li>
|
||||
</ol>
|
||||
|
||||
<p></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="DEFAULT_MAX_BACKUP_FILE_COUNT"></a><code>internal const <b>DEFAULT_MAX_BACKUP_FILE_COUNT</b> = 5;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
Defines number of log file set to mantain during logs rotation</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="DEFAULT_MAX_FILE_SIZE_KB"></a><code>internal const <b>DEFAULT_MAX_FILE_SIZE_KB</b> = 1000;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
Defines the max size of each log file</p>
|
||||
<p>
|
||||
The actual meaning is: "If the file size is > than <a class="normal" href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_FILE_SIZE_KB">DEFAULT_MAX_FILE_SIZE_KB</a> then rotate logs.</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aMaxBackupFileCount : Integer = <a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_BACKUP_FILE_COUNT">DEFAULT_MAX_BACKUP_FILE_COUNT</a>; aMaxFileSizeInKiloByte: Integer = <a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_MAX_FILE_SIZE_KB">DEFAULT_MAX_FILE_SIZE_KB</a>; aLogsFolder: string = ''; aFileAppenderOptions: <a href="LoggerPro.FileAppender.html#TFileAppenderOptions">TFileAppenderOptions</a> = []; aLogFormat: string = <a href="LoggerPro.FileAppender.TLoggerProFileAppender.html#DEFAULT_LOG_FORMAT">DEFAULT_LOG_FORMAT</a>); reintroduce;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); overload; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,87 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.FileAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="unit">Unit LoggerPro.FileAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td>Functions and Procedures</td><td><a class="section" href="#PasDoc-Types">Types</a></td><td>Constants</td><td>Variables</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li><a href="LoggerPro.html">LoggerPro</a></li><li>System.Classes</li><li>System.SysUtils</li><li>System.Generics.Collections</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
|
||||
<table class="classestable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.FileAppender.TLoggerProFileAppender.html"><code>TLoggerProFileAppender</code></a></td>
|
||||
<td class="itemdesc">The default file appender</td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.FileAppender.html#TFileAppenderOption">TFileAppenderOption</a></b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.FileAppender.html#TFileAppenderOptions">TFileAppenderOptions</a></b> = set of <a href="LoggerPro.FileAppender.html#TFileAppenderOption">TFileAppenderOption</a>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Types</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TFileAppenderOption"></a><code><b>TFileAppenderOption</b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<p>
|
||||
Logs to file using one different file for each different TAG used.</p>
|
||||
<p>
|
||||
Implements log rotations. This appender is the default appender when no configuration is done on the <code>TLogger</code> class.
|
||||
|
||||
<p>Without any configuration LoggerPro uses the <a class="normal" href="LoggerPro.FileAppender.TLoggerProFileAppender.html">TLoggerProFileAppender</a> with the default configuration.
|
||||
|
||||
<p>So the following two blocks of code are equivalent:
|
||||
|
||||
<p></p>
|
||||
|
||||
<pre class="longcode">
|
||||
<span class="pascal_numeric"></span>...
|
||||
TLogger.Initialize; <span class="pascal_comment">//=> uses the TLoggerProFileAppender because no other configuration is provided</span>
|
||||
<span class="pascal_numeric"></span>...
|
||||
|
||||
<span class="pascal_numeric"></span>...
|
||||
TLogger.AddAppender(TLoggerProFileAppender.Create);
|
||||
TLogger.Initialize <span class="pascal_comment">//=> uses the TLoggerProFileAppender as configured</span>
|
||||
<span class="pascal_numeric"></span>...
|
||||
</pre>
|
||||
|
||||
<p></p>
|
||||
<h6 class="description_section">Values</h6>
|
||||
<ul>
|
||||
<li>
|
||||
IncludePID: </li>
|
||||
</ul>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TFileAppenderOptions"></a><code><b>TFileAppenderOptions</b> = set of <a href="LoggerPro.FileAppender.html#TFileAppenderOption">TFileAppenderOption</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,64 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.GlobalLogger</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="unit">Unit LoggerPro.GlobalLogger</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td>Classes, Interfaces, Objects and Records</td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td>Types</td><td>Constants</td><td>Variables</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<p>
|
||||
Contains the global logger as a thread safe singleton</p>
|
||||
<p>
|
||||
Use the global logger for fast&dirty logging, but consider to use your own instance of <a class="normal" href="LoggerPro.ILogWriter.html">ILogWriter</a> (created using <a class="normal" href="LoggerPro.html#BuildLogWriter">BuildLogWriter</a>) for all your serious logging needs. </p>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li><a href="LoggerPro.html">LoggerPro</a></li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.GlobalLogger.html#Log">Log</a></b>: <a href="LoggerPro.ILogWriter.html">ILogWriter</a>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.GlobalLogger.html#ReleaseGlobalLogger">ReleaseGlobalLogger</a></b>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Functions and Procedures</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="Log"></a><code>function <b>Log</b>: <a href="LoggerPro.ILogWriter.html">ILogWriter</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<p>
|
||||
The global logger. Just uses <code>Logger.GlobalLogger</code> and you can start to log using <code>Log</code> function.</p>
|
||||
<p>
|
||||
The global logger is configured with a <a class="normal" href="LoggerPro.FileAppender.TLoggerProFileAppender.html">TLoggerProFileAppender</a> using default settings.</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="ReleaseGlobalLogger"></a><code>procedure <b>ReleaseGlobalLogger</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<p>
|
||||
Use only inside DLL because dll unloading is not a safe place to shutdown threads, so call this before unload DLL</p>
|
||||
<p>
|
||||
Use this also in ISAPI dll. Check the <code>loggerproisapisample.dll</code> sample</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<h2 class="authors">Author</h2>
|
||||
<ul class="authors">
|
||||
<li>Daniele Teti - <a href="mailto:d.teti@bittime.it">d.teti@bittime.it</a></li>
|
||||
</ul>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,142 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Interface ILogAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="ILogAppender"></a><h1 class="cio">Interface ILogAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type ILogAppender = interface(IInterface)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
Interface implemented by all the classes used as appenders</p>
|
||||
<h6 class="description_section">Attributes</h6>
|
||||
<dl class="attributes">
|
||||
<dt>GUID['{58AFB557-C594-4A4B-8DC9-0F13B37F60CB}']</dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">IInterface</li>
|
||||
<li class="thisitem">ILogAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogAppender.html#Setup">Setup</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogAppender.html#TearDown">TearDown</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogAppender.html#SetEnabled">SetEnabled</a></b>(const Value: Boolean);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.ILogAppender.html#IsEnabled">IsEnabled</a></b>: Boolean;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogAppender.html#SetLogLevel">SetLogLevel</a></b>(const Value: <a href="LoggerPro.html#TLogType">TLogType</a>);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.ILogAppender.html#GetLogLevel">GetLogLevel</a></b>: <a href="LoggerPro.html#TLogType">TLogType</a>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
This method is internally called by LoggerPro to initialize the appender</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
This method is called at each log item represented by <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a></p>
|
||||
<p>
|
||||
The appender should be as-fast-as-it-can to handle the message, however each appender runs in a separated thread.</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
This method is internally called by LoggerPro to deinitialize the appender</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="SetEnabled"></a><code>procedure <b>SetEnabled</b>(const Value: Boolean);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
(Enable or disable the log appender. Is used internally by LoggerPro but must be implemented by each logappender. A simple <code>if enabled then dolog</code> is enough</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="IsEnabled"></a><code>function <b>IsEnabled</b>: Boolean;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
(Returns if the logappender is currently enabled or not.</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="SetLogLevel"></a><code>procedure <b>SetLogLevel</b>(const Value: <a href="LoggerPro.html#TLogType">TLogType</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
(Set a custom log level for this appender. This value must be lower than the global LogWriter log level.</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="GetLogLevel"></a><code>function <b>GetLogLevel</b>: <a href="LoggerPro.html#TLogType">TLogType</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
(Get the loglevel for the appender.</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,212 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Interface ILogWriter</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="ILogWriter"></a><h1 class="cio">Interface ILogWriter</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td><a class="section" href="#PasDoc-Properties">Properties</a></td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type ILogWriter = interface(IInterface)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<h6 class="description_section">Attributes</h6>
|
||||
<dl class="attributes">
|
||||
<dt>GUID['{A717A040-4493-458F-91B2-6F6E2AFB496F}']</dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">IInterface</li>
|
||||
<li class="thisitem">ILogWriter</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#Debug">Debug</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#DebugFmt">DebugFmt</a></b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#Info">Info</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#InfoFmt">InfoFmt</a></b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#Warn">Warn</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#WarnFmt">WarnFmt</a></b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#Error">Error</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#ErrorFmt">ErrorFmt</a></b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.ILogWriter.html#Log">Log</a></b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.ILogWriter.html#GetAppendersClassNames">GetAppendersClassNames</a></b>: TArray<string>;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.ILogWriter.html#GetAppenderStatus">GetAppenderStatus</a></b>(const AppenderName: string): string;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.ILogWriter.html#GetAppenders">GetAppenders</a></b>(const Index: Integer): <a href="LoggerPro.ILogAppender.html">ILogAppender</a>;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.ILogWriter.html#AppendersCount">AppendersCount</a></b>(): Integer;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Properties"></a><h3 class="summary">Properties</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.ILogWriter.html#Appenders">Appenders</a></b>[constindex:Integer]: <a href="LoggerPro.ILogAppender.html">ILogAppender</a> read <a href="LoggerPro.ILogWriter.html#GetAppenders">GetAppenders</a>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Debug"></a><code>procedure <b>Debug</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="DebugFmt"></a><code>procedure <b>DebugFmt</b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Info"></a><code>procedure <b>Info</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="InfoFmt"></a><code>procedure <b>InfoFmt</b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Warn"></a><code>procedure <b>Warn</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WarnFmt"></a><code>procedure <b>WarnFmt</b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Error"></a><code>procedure <b>Error</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="ErrorFmt"></a><code>procedure <b>ErrorFmt</b>(aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Log"></a><code>procedure <b>Log</b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="GetAppendersClassNames"></a><code>function <b>GetAppendersClassNames</b>: TArray<string>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="GetAppenderStatus"></a><code>function <b>GetAppenderStatus</b>(const AppenderName: string): string;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="GetAppenders"></a><code>function <b>GetAppenders</b>(const Index: Integer): <a href="LoggerPro.ILogAppender.html">ILogAppender</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="AppendersCount"></a><code>function <b>AppendersCount</b>(): Integer;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<h3 class="detail">Properties</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Appenders"></a><code>property <b>Appenders</b>[constindex:Integer]: <a href="LoggerPro.ILogAppender.html">ILogAppender</a> read <a href="LoggerPro.ILogWriter.html#GetAppenders">GetAppenders</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,88 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.OutputDebugStringAppender: Class TLoggerProOutputDebugStringAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLoggerProOutputDebugStringAppender"></a><h1 class="cio">Class TLoggerProOutputDebugStringAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.OutputDebugStringAppender.html">LoggerPro.OutputDebugStringAppender</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLoggerProOutputDebugStringAppender = class(<a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
This appenders sends logs to the <code>OutputDebugString</code> function on Windows OSes</p>
|
||||
<p>
|
||||
To learn how to use this appender, check the sample <code>outputdebugstring_appender.dproj</code></p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="ancestor"><a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a></li>
|
||||
<li class="thisitem">TLoggerProOutputDebugStringAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html#Create">Create</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html#Setup">Setup</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html#TearDown">TearDown</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); override;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.OutputDebugStringAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="unit">Unit LoggerPro.OutputDebugStringAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td>Functions and Procedures</td><td>Types</td><td>Constants</td><td>Variables</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li><a href="LoggerPro.html">LoggerPro</a></li><li>System.Classes</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
|
||||
<table class="classestable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.OutputDebugStringAppender.TLoggerProOutputDebugStringAppender.html"><code>TLoggerProOutputDebugStringAppender</code></a></td>
|
||||
<td class="itemdesc">This appenders sends logs to the <code>OutputDebugString</code> function on Windows OSes</td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,174 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Class TLogItem</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLogItem"></a><h1 class="cio">Class TLogItem</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td><a class="section" href="#PasDoc-Properties">Properties</a></td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLogItem = class sealed(TObject)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
Represent the single log item</p>
|
||||
<p>
|
||||
Each call to some kind of log method is wrapped in a <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> instance and passed down the layour of LoggerPro.</p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TObject</li>
|
||||
<li class="thisitem">TLogItem</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.TLogItem.html#Create">Create</a></b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string); overload;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.TLogItem.html#Create">Create</a></b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string; aTimeStamp: TDateTime; aThreadID: Cardinal); overload;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.TLogItem.html#Clone">Clone</a></b>: <a href="LoggerPro.TLogItem.html">TLogItem</a>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Properties"></a><h3 class="summary">Properties</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLogItem.html#LogType">LogType</a></b>: <a href="LoggerPro.html#TLogType">TLogType</a> read FType;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLogItem.html#LogMessage">LogMessage</a></b>: string read FMessage;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLogItem.html#LogTag">LogTag</a></b>: string read FTag;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLogItem.html#TimeStamp">TimeStamp</a></b>: TDateTime read FTimeStamp;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLogItem.html#ThreadID">ThreadID</a></b>: Cardinal read FThreadID;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLogItem.html#LogTypeAsString">LogTypeAsString</a></b>: string read GetLogTypeAsString;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string); overload;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string; aTimeStamp: TDateTime; aThreadID: Cardinal); overload;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Clone"></a><code>function <b>Clone</b>: <a href="LoggerPro.TLogItem.html">TLogItem</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<h3 class="detail">Properties</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="LogType"></a><code>property <b>LogType</b>: <a href="LoggerPro.html#TLogType">TLogType</a> read FType;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
The type of the log</p>
|
||||
<p>
|
||||
Log can be one of the following types: </p>
|
||||
|
||||
<ul class="paragraph_spacing">
|
||||
<li><p>DEBUG</p></li>
|
||||
<li><p>INFO</p></li>
|
||||
<li><p>WARNING</p></li>
|
||||
<li><p>ERROR</p></li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="LogMessage"></a><code>property <b>LogMessage</b>: string read FMessage;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
The text of the log message</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="LogTag"></a><code>property <b>LogTag</b>: string read FTag;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
The tag of the log message</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TimeStamp"></a><code>property <b>TimeStamp</b>: TDateTime read FTimeStamp;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
The timestamp when the <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> is generated</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="ThreadID"></a><code>property <b>ThreadID</b>: Cardinal read FThreadID;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
The IDof the thread which generated the log item</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="LogTypeAsString"></a><code>property <b>LogTypeAsString</b>: string read GetLogTypeAsString;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
<p>
|
||||
The type of the log converted in string</p>
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,215 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Class TLogWriter</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLogWriter"></a><h1 class="cio">Class TLogWriter</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLogWriter = class(TInterfacedObject, <a class="normal" href="LoggerPro.ILogWriter.html">ILogWriter</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="thisitem">TLogWriter</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.TLogWriter.html#GetAppenders">GetAppenders</a></b>(const Index: Integer): <a href="LoggerPro.ILogAppender.html">ILogAppender</a>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.TLogWriter.html#AppendersCount">AppendersCount</a></b>(): Integer;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.TLogWriter.html#Create">Create</a></b>(aLogLevel: <a href="LoggerPro.html#TLogType">TLogType</a> = TLogType.Debug); overload;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.TLogWriter.html#Create">Create</a></b>(aLogAppenders: <a href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a>; aLogLevel: <a href="LoggerPro.html#TLogType">TLogType</a> = TLogType.Debug); overload;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>destructor <b><a href="LoggerPro.TLogWriter.html#Destroy">Destroy</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#Debug">Debug</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#DebugFmt">DebugFmt</a></b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#Info">Info</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#InfoFmt">InfoFmt</a></b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#Warn">Warn</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#WarnFmt">WarnFmt</a></b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#Error">Error</a></b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#ErrorFmt">ErrorFmt</a></b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#Log">Log</a></b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.TLogWriter.html#LogFmt">LogFmt</a></b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="GetAppenders"></a><code>function <b>GetAppenders</b>(const Index: Integer): <a href="LoggerPro.ILogAppender.html">ILogAppender</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="AppendersCount"></a><code>function <b>AppendersCount</b>(): Integer;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aLogLevel: <a href="LoggerPro.html#TLogType">TLogType</a> = TLogType.Debug); overload;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aLogAppenders: <a href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a>; aLogLevel: <a href="LoggerPro.html#TLogType">TLogType</a> = TLogType.Debug); overload;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Debug"></a><code>procedure <b>Debug</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="DebugFmt"></a><code>procedure <b>DebugFmt</b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Info"></a><code>procedure <b>Info</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="InfoFmt"></a><code>procedure <b>InfoFmt</b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Warn"></a><code>procedure <b>Warn</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WarnFmt"></a><code>procedure <b>WarnFmt</b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Error"></a><code>procedure <b>Error</b>(aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="ErrorFmt"></a><code>procedure <b>ErrorFmt</b>(aMessage: string; aParams: array of TVarRec; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Log"></a><code>procedure <b>Log</b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="LogFmt"></a><code>procedure <b>LogFmt</b>(aType: <a href="LoggerPro.html#TLogType">TLogType</a>; aMessage: string; aParams: array of const; aTag: string);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,93 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Class TLogger</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (beta 1)</h2><p>A simple, pluggable and modern logging framework for Delphi</p><a name="TLogger"></a><h1 class="cio">Class TLogger</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLogger = class sealed(TObject)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TObject</li>
|
||||
<li class="thisitem">TLogger</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>class constructor <b><a href="LoggerPro.TLogger.html#Create">Create</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>class destructor <b><a href="LoggerPro.TLogger.html#Destroy">Destroy</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>class procedure <b><a href="LoggerPro.TLogger.html#AddAppender">AddAppender</a></b>(aILogAppender: <a href="LoggerPro.ILogAppender.html">ILogAppender</a>);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>class procedure <b><a href="LoggerPro.TLogger.html#Initialize">Initialize</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>class procedure <b><a href="LoggerPro.TLogger.html#ResetAppenders">ResetAppenders</a></b>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>class constructor <b>Create</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Destroy"></a><code>class destructor <b>Destroy</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="AddAppender"></a><code>class procedure <b>AddAppender</b>(aILogAppender: <a href="LoggerPro.ILogAppender.html">ILogAppender</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Initialize"></a><code>class procedure <b>Initialize</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="ResetAppenders"></a><code>class procedure <b>ResetAppenders</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,47 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Class TLoggerProEventsHandler</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLoggerProEventsHandler"></a><h1 class="cio">Class TLoggerProEventsHandler</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td><a class="section" href="#PasDoc-Fields">Fields</a></td><td>Methods</td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLoggerProEventsHandler = class sealed(TObject)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TObject</li>
|
||||
<li class="thisitem">TLoggerProEventsHandler</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Fields"></a><h3 class="summary">Fields</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.TLoggerProEventsHandler.html#OnAppenderError">OnAppenderError</a></b>: <a href="LoggerPro.html#TLoggerProAppenderErrorEvent">TLoggerProAppenderErrorEvent</a>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Fields</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="OnAppenderError"></a><code><b>OnAppenderError</b>: <a href="LoggerPro.html#TLoggerProAppenderErrorEvent">TLoggerProAppenderErrorEvent</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,89 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro: Class TLoggerThread</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TLoggerThread"></a><h1 class="cio">Class TLoggerThread</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td><a class="section" href="#PasDoc-Properties">Properties</a></td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.html">LoggerPro</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TLoggerThread = class(TThread)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TThread</li>
|
||||
<li class="thisitem">TLoggerThread</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.TLoggerThread.html#Create">Create</a></b>(aAppenders: <a href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a>);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>destructor <b><a href="LoggerPro.TLoggerThread.html#Destroy">Destroy</a></b>; override;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Properties"></a><h3 class="summary">Properties</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLoggerThread.html#EventsHandlers">EventsHandlers</a></b>: <a href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a> read FEventsHandlers
|
||||
write SetEventsHandlers;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>property <b><a href="LoggerPro.TLoggerThread.html#LogWriterQueue">LogWriterQueue</a></b>: TThreadedQueue<<a href="LoggerPro.TLogItem.html">TLogItem</a>> read FQueue;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aAppenders: <a href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<h3 class="detail">Properties</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="EventsHandlers"></a><code>property <b>EventsHandlers</b>: <a href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a> read FEventsHandlers
|
||||
write SetEventsHandlers;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="LogWriterQueue"></a><code>property <b>LogWriterQueue</b>: TThreadedQueue<<a href="LoggerPro.TLogItem.html">TLogItem</a>> read FQueue;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.VCLAppenders: Class TMemoLogAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (beta 1)</h2><p>A simple, pluggable and modern logging framework for Delphi</p><a name="TMemoLogAppender"></a><h1 class="cio">Class TMemoLogAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.VCLAppenders.html">LoggerPro.VCLAppenders</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TMemoLogAppender = class(TInterfacedObject, <a class="normal" href="LoggerPro.ILogAppender.html">ILogAppender</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
Logs appending formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TMemo</p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="thisitem">TMemoLogAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.VCLAppenders.TMemoLogAppender.html#Create">Create</a></b>(aMemo: TMemo);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLAppenders.TMemoLogAppender.html#Setup">Setup</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLAppenders.TMemoLogAppender.html#TearDown">TearDown</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLAppenders.TMemoLogAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>);</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aMemo: TMemo);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.VCLAppenders: Class TStringsLogAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (beta 1)</h2><p>A simple, pluggable and modern logging framework for Delphi</p><a name="TStringsLogAppender"></a><h1 class="cio">Class TStringsLogAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.VCLAppenders.html">LoggerPro.VCLAppenders</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TStringsLogAppender = class(TInterfacedObject, <a class="normal" href="LoggerPro.ILogAppender.html">ILogAppender</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
Logs appending formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TStrings descendant</p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="thisitem">TStringsLogAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.VCLAppenders.TStringsLogAppender.html#Create">Create</a></b>(aStrings: TStrings);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLAppenders.TStringsLogAppender.html#Setup">Setup</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLAppenders.TStringsLogAppender.html#TearDown">TearDown</a></b>;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLAppenders.TStringsLogAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>);</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aStrings: TStrings);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,44 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.VCLAppenders</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (beta 1)</h2><p>A simple, pluggable and modern logging framework for Delphi</p><h1 class="unit">Unit LoggerPro.VCLAppenders</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td>Functions and Procedures</td><td>Types</td><td>Constants</td><td>Variables</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<p>
|
||||
The unit to include if you want to use VCL appenders like <a class="normal" href="LoggerPro.VCLAppenders.TStringsLogAppender.html">TStringsLogAppender</a> or <a class="normal" href="LoggerPro.VCLAppenders.TMemoLogAppender.html">TMemoLogAppender</a></p>
|
||||
<p>
|
||||
</p>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li><a href="LoggerPro.html">LoggerPro</a></li><li>System.Classes</li><li>Vcl.StdCtrls</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
|
||||
<table class="classestable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.VCLAppenders.TStringsLogAppender.html"><code>TStringsLogAppender</code></a></td>
|
||||
<td class="itemdesc">Logs appending formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TStrings descendant</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.VCLAppenders.TMemoLogAppender.html"><code>TMemoLogAppender</code></a></td>
|
||||
<td class="itemdesc">Logs appending formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TMemo</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="authors">Author</h2>
|
||||
<ul class="authors">
|
||||
<li>Daniele Teti</li>
|
||||
</ul>
|
||||
Copyright 2016 Daniele Teti<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,86 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.VCLMemoAppender: Class TVCLMemoLogAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<a name="TVCLMemoLogAppender"></a><h1 class="cio">Class TVCLMemoLogAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
|
||||
<p class="unitlink">
|
||||
<a href="LoggerPro.VCLMemoAppender.html">LoggerPro.VCLMemoAppender</a></p>
|
||||
<h2 class="declaration">Declaration</h2>
|
||||
<p class="declaration">
|
||||
<code>type TVCLMemoLogAppender = class(<a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a>)</code></p>
|
||||
<h2 class="description">Description</h2>
|
||||
<p>
|
||||
Appends formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TMemo in a VCL application</p>
|
||||
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
|
||||
<ul class="hierarchy"><li class="ancestor">TInterfacedObject</li>
|
||||
<li class="ancestor"><a class="normal" href="LoggerPro.TLoggerProAppenderBase.html">TLoggerProAppenderBase</a></li>
|
||||
<li class="thisitem">TVCLMemoLogAppender</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>constructor <b><a href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html#Create">Create</a></b>(aMemo: TMemo; aMaxLogLines: Word = 500); reintroduce;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html#Setup">Setup</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html#TearDown">TearDown</a></b>; override;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><code>procedure <b><a href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html#WriteLog">WriteLog</a></b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); override;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Methods</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(aMemo: TMemo; aMaxLogLines: Word = 500); reintroduce;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="Setup"></a><code>procedure <b>Setup</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="TearDown"></a><code>procedure <b>TearDown</b>; override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
|
||||
<td class="itemcode"><a name="WriteLog"></a><code>procedure <b>WriteLog</b>(const aLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>); override;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro.VCLMemoAppender</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="unit">Unit LoggerPro.VCLMemoAppender</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td>Functions and Procedures</td><td>Types</td><td>Constants</td><td>Variables</td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li><a href="LoggerPro.html">LoggerPro</a></li><li>System.Classes</li><li>Vcl.StdCtrls</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
|
||||
<table class="classestable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.VCLMemoAppender.TVCLMemoLogAppender.html"><code>TVCLMemoLogAppender</code></a></td>
|
||||
<td class="itemdesc">Appends formatted <a class="normal" href="LoggerPro.TLogItem.html">TLogItem</a> to a TMemo in a VCL application</td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,230 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: LoggerPro</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="unit">Unit LoggerPro</h1>
|
||||
<table class="sections wide_list">
|
||||
<tr>
|
||||
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td><a class="section" href="#PasDoc-Types">Types</a></td><td>Constants</td><td><a class="section" href="#PasDoc-Variables">Variables</a></td></tr></table>
|
||||
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
|
||||
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
|
||||
<ul class="useslist"><li>System.Generics.Collections</li><li>System.SysUtils</li><li>System.Classes</li></ul><h2 class="overview">Overview</h2>
|
||||
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
|
||||
<table class="classestable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.TLogItem.html"><code>TLogItem</code></a></td>
|
||||
<td class="itemdesc">Represent the single log item</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.TLoggerProEventsHandler.html"><code>TLoggerProEventsHandler</code></a></td>
|
||||
<td class="itemdesc"> </td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Interface <a class="bold" href="LoggerPro.ILogAppender.html"><code>ILogAppender</code></a></td>
|
||||
<td class="itemdesc">Interface implemented by all the classes used as appenders</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.ELoggerPro.html"><code>ELoggerPro</code></a></td>
|
||||
<td class="itemdesc"> </td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Interface <a class="bold" href="LoggerPro.ILogWriter.html"><code>ILogWriter</code></a></td>
|
||||
<td class="itemdesc"> </td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.TLoggerThread.html"><code>TLoggerThread</code></a></td>
|
||||
<td class="itemdesc"> </td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.TLogWriter.html"><code>TLogWriter</code></a></td>
|
||||
<td class="itemdesc"> </td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname">Class <a class="bold" href="LoggerPro.TLoggerProAppenderBase.html"><code>TLoggerProAppenderBase</code></a></td>
|
||||
<td class="itemdesc"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code>function <b><a href="LoggerPro.html#BuildLogWriter">BuildLogWriter</a></b>(aAppenders: array of <a href="LoggerPro.ILogAppender.html">ILogAppender</a>; aEventsHandlers: <a href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a> = nil; aLogLevel: <a href="LoggerPro.html#TLogType">TLogType</a> = TLogType.Debug): <a href="LoggerPro.ILogWriter.html">ILogWriter</a>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#TLogType">TLogType</a></b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#TLogErrorReason">TLogErrorReason</a></b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#TLogErrorAction">TLogErrorAction</a></b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#TLoggerProAppenderErrorEvent">TLoggerProAppenderErrorEvent</a></b> = reference to procedure(const AppenderClassName
|
||||
: string; const aFailedLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>; const Reason: <a href="LoggerPro.html#TLogErrorReason">TLogErrorReason</a>;
|
||||
var Action: <a href="LoggerPro.html#TLogErrorAction">TLogErrorAction</a>);</code></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#TLogAppenderList">TLogAppenderList</a></b> = TList<<a href="LoggerPro.ILogAppender.html">ILogAppender</a>>;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<a name="PasDoc-Variables"></a><h3 class="summary">Variables</h3>
|
||||
<table class="summary wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#DefaultLoggerProMainQueueSize">DefaultLoggerProMainQueueSize</a></b>: Cardinal = 100000;</code></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemcode"><code><b><a href="LoggerPro.html#DefaultLoggerProAppenderQueueSize">DefaultLoggerProAppenderQueueSize</a></b>: Cardinal = 10000;</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 class="description">Description</h2>
|
||||
<h3 class="detail">Functions and Procedures</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="BuildLogWriter"></a><code>function <b>BuildLogWriter</b>(aAppenders: array of <a href="LoggerPro.ILogAppender.html">ILogAppender</a>; aEventsHandlers: <a href="LoggerPro.TLoggerProEventsHandler.html">TLoggerProEventsHandler</a> = nil; aLogLevel: <a href="LoggerPro.html#TLogType">TLogType</a> = TLogType.Debug): <a href="LoggerPro.ILogWriter.html">ILogWriter</a>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<p>
|
||||
Builds a new ILogWriter instance. Call this global function to start logging like a pro.</p>
|
||||
<p>
|
||||
Here's a sample unit that you can use in your code </p>
|
||||
|
||||
<pre class="longcode">
|
||||
<span class="pascal_keyword">unit</span> LoggerProConfig;
|
||||
|
||||
<span class="pascal_keyword">interface</span>
|
||||
|
||||
<span class="pascal_keyword">uses</span>
|
||||
LoggerPro;
|
||||
|
||||
<span class="pascal_keyword">function</span> Log: ILogWriter;
|
||||
|
||||
<span class="pascal_keyword">implementation</span>
|
||||
|
||||
<span class="pascal_keyword">uses</span>
|
||||
LoggerPro.FileAppender;
|
||||
|
||||
<span class="pascal_keyword">var</span>
|
||||
_Log: ILogWriter;
|
||||
|
||||
<span class="pascal_keyword">function</span> Log: ILogWriter;
|
||||
<span class="pascal_keyword">begin</span>
|
||||
Result := _Log;
|
||||
<span class="pascal_keyword">end</span>;
|
||||
|
||||
<span class="pascal_keyword">initialization</span>
|
||||
|
||||
<span class="pascal_comment">//If you need other appenders, feel free to add them here in the array</span>
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create(<span class="pascal_numeric">10</span>, <span class="pascal_numeric">5</span>)]);
|
||||
|
||||
<span class="pascal_keyword">end</span>.
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
|
||||
<p>Add this unit to your project, then when you need to use the logger, include the unit and call one of the followings: </p>
|
||||
|
||||
<ul class="paragraph_spacing">
|
||||
<li><p>Log.Debug('This is a debug message', 'tag1')</p></li>
|
||||
<li><p>Log.Info('This is an information message', 'tag1')</p></li>
|
||||
<li><p>Log.Warn('This is a warning message', 'tag1')</p></li>
|
||||
<li><p>Log.Error('This is an error message', 'tag1')</p></li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<h3 class="detail">Types</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TLogType"></a><code><b>TLogType</b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<h6 class="description_section">Values</h6>
|
||||
<ul>
|
||||
<li>
|
||||
Debug = 0: </li>
|
||||
<li>
|
||||
Info: </li>
|
||||
<li>
|
||||
Warning: </li>
|
||||
<li>
|
||||
Error: </li>
|
||||
</ul>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TLogErrorReason"></a><code><b>TLogErrorReason</b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<h6 class="description_section">Values</h6>
|
||||
<ul>
|
||||
<li>
|
||||
QueueFull: </li>
|
||||
</ul>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TLogErrorAction"></a><code><b>TLogErrorAction</b> = (...);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
<h6 class="description_section">Values</h6>
|
||||
<ul>
|
||||
<li>
|
||||
Skip: </li>
|
||||
<li>
|
||||
DisableAppender: </li>
|
||||
</ul>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TLoggerProAppenderErrorEvent"></a><code><b>TLoggerProAppenderErrorEvent</b> = reference to procedure(const AppenderClassName
|
||||
: string; const aFailedLogItem: <a href="LoggerPro.TLogItem.html">TLogItem</a>; const Reason: <a href="LoggerPro.html#TLogErrorReason">TLogErrorReason</a>;
|
||||
var Action: <a href="LoggerPro.html#TLogErrorAction">TLogErrorAction</a>);</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="TLogAppenderList"></a><code><b>TLogAppenderList</b> = TList<<a href="LoggerPro.ILogAppender.html">ILogAppender</a>>;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
</td></tr>
|
||||
</table>
|
||||
<h3 class="detail">Variables</h3>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="DefaultLoggerProMainQueueSize"></a><code><b>DefaultLoggerProMainQueueSize</b>: Cardinal = 100000;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
</td></tr>
|
||||
</table>
|
||||
<table class="detail wide_list">
|
||||
<tr class="list">
|
||||
<td class="itemcode"><a name="DefaultLoggerProAppenderQueueSize"></a><code><b>DefaultLoggerProAppenderQueueSize</b>: Cardinal = 10000;</code></td>
|
||||
</tr>
|
||||
<tr><td colspan="1">
|
||||
</td></tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
Binary file not shown.
Before Width: | Height: | Size: 141 B |
@ -1,47 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: All Units</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="allitems">All Units</h1>
|
||||
<table class="unitstable wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Name</th>
|
||||
<th class="itemdesc">Description</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.html">LoggerPro</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.ConsoleAppender.html">LoggerPro.ConsoleAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.FileAppender.html">LoggerPro.FileAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.GlobalLogger.html">LoggerPro.GlobalLogger</a></td>
|
||||
<td class="itemdesc"><p>Contains the global logger as a thread safe singleton</p></td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.OutputDebugStringAppender.html">LoggerPro.OutputDebugStringAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="itemname"><a class="bold" href="LoggerPro.VCLMemoAppender.html">LoggerPro.VCLMemoAppender</a></td>
|
||||
<td class="itemdesc"><p> </p></td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,55 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>LoggerPro: Legend</title>
|
||||
<meta name="generator" content="PasDoc 0.14.0">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
|
||||
</head>
|
||||
<body>
|
||||
<table class="container"><tr><td class="navigation">
|
||||
<h2>LoggerPro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
|
||||
<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
<h1 class="markerlegend">Legend</h1>
|
||||
<table class="markerlegend wide_list">
|
||||
<tr class="listheader">
|
||||
<th class="itemname">Marker</th>
|
||||
<th class="itemdesc">Visibility</th>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="legendmarker"><img src="private.gif" alt="Strict Private" title="Strict Private"></td>
|
||||
<td class="legenddesc">Strict Private</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="legendmarker"><img src="private.gif" alt="Private" title="Private"></td>
|
||||
<td class="legenddesc">Private</td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="legendmarker"><img src="protected.gif" alt="Strict Protected" title="Strict Protected"></td>
|
||||
<td class="legenddesc">Strict Protected</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="legendmarker"><img src="protected.gif" alt="Protected" title="Protected"></td>
|
||||
<td class="legenddesc">Protected</td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="legendmarker"><img src="public.gif" alt="Public" title="Public"></td>
|
||||
<td class="legenddesc">Public</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="legendmarker"><img src="published.gif" alt="Published" title="Published"></td>
|
||||
<td class="legenddesc">Published</td>
|
||||
</tr>
|
||||
<tr class="list">
|
||||
<td class="legendmarker"><img src="automated.gif" alt="Automated" title="Automated"></td>
|
||||
<td class="legenddesc">Automated</td>
|
||||
</tr>
|
||||
<tr class="list2">
|
||||
<td class="legendmarker"><img src="published.gif" alt="Implicit" title="Implicit"></td>
|
||||
<td class="legenddesc">Implicit</td>
|
||||
</tr>
|
||||
</table>
|
||||
Copyright 2016 Daniele Teti
|
||||
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.14.0</a>. </em>
|
||||
</span>
|
||||
</td></tr></table></body></html>
|
@ -1,193 +0,0 @@
|
||||
/*
|
||||
Copyright 1998-2014 PasDoc developers.
|
||||
|
||||
This file is part of "PasDoc".
|
||||
|
||||
"PasDoc" is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
"PasDoc" is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with "PasDoc"; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
body, html, table.container {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Verdana,Arial;
|
||||
color: black;
|
||||
background-color: white;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
table.container {
|
||||
width: 100%;
|
||||
border-spacing: 0;
|
||||
}
|
||||
table.container td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
td.navigation {
|
||||
width: 200px;
|
||||
color: white;
|
||||
background-color: #787878;
|
||||
margin: 0;
|
||||
/* padding-bottom is a little larger, to make navigation column have some
|
||||
nice height even when td.content column is very small. */
|
||||
padding: 1em 1em 100px 1em;
|
||||
}
|
||||
td.navigation p { padding: 0; }
|
||||
td.navigation h2 { margin-top: 0; }
|
||||
|
||||
td.content { padding: 1em; }
|
||||
td.content h1 { margin-top: 0; }
|
||||
|
||||
img { border:0px; }
|
||||
|
||||
a:link {color:#C91E0C; text-decoration: none; }
|
||||
a:visited {color:#7E5C31; text-decoration: none; }
|
||||
a:hover {text-decoration: underline; }
|
||||
a:active {text-decoration: underline; }
|
||||
|
||||
a.navigation:link { color: white; text-decoration: none; }
|
||||
a.navigation:visited { color: white; text-decoration: none; }
|
||||
a.navigation:hover { color: white; font-weight: bold; text-decoration: none; }
|
||||
a.navigation:active { color: white; text-decoration: none; }
|
||||
|
||||
a.bold:link {color:#C91E0C; text-decoration: none; font-weight:bold; }
|
||||
a.bold:visited {color:#7E5C31; text-decoration: none; font-weight:bold; }
|
||||
a.bold:hover {text-decoration: underline; font-weight:bold; }
|
||||
a.bold:active {text-decoration: underline; font-weight:bold; }
|
||||
|
||||
a.section {color: green; text-decoration: none; font-weight: bold; }
|
||||
a.section:hover {color: green; text-decoration: underline; font-weight: bold; }
|
||||
|
||||
ul.useslist a:link {color:#C91E0C; text-decoration: none; font-weight:bold; }
|
||||
ul.useslist a:visited {color:#7E5C31; text-decoration: none; font-weight:bold; }
|
||||
ul.useslist a:hover {text-decoration: underline; font-weight:bold; }
|
||||
ul.useslist a:active {text-decoration: underline; font-weight:bold; }
|
||||
|
||||
ul.hierarchy { list-style-type:none; }
|
||||
ul.hierarchylevel { list-style-type:none; }
|
||||
|
||||
p.unitlink a:link {color:#C91E0C; text-decoration: none; font-weight:bold; }
|
||||
p.unitlink a:visited {color:#7E5C31; text-decoration: none; font-weight:bold; }
|
||||
p.unitlink a:hover {text-decoration: underline; font-weight:bold; }
|
||||
p.unitlink a:active {text-decoration: underline; font-weight:bold; }
|
||||
|
||||
tr.list { background: #FFBF44; }
|
||||
tr.list2 { background: #FFC982; }
|
||||
tr.listheader { background: #C91E0C; color: white; }
|
||||
|
||||
table.wide_list { border-spacing:2px; width:100%; }
|
||||
table.wide_list td { vertical-align:top; padding:4px; }
|
||||
|
||||
table.markerlegend { width:auto; }
|
||||
table.markerlegend td.legendmarker { text-align:center; }
|
||||
|
||||
table.sections { background:white; }
|
||||
table.sections td {background:lightgray; }
|
||||
|
||||
table.summary td.itemcode { width:100%; }
|
||||
table.detail td.itemcode { width:100%; }
|
||||
|
||||
td.itemname {white-space:nowrap; }
|
||||
td.itemunit {white-space:nowrap; }
|
||||
td.itemdesc { width:100%; }
|
||||
|
||||
div.nodescription { color:red; }
|
||||
dl.parameters dt { color:blue; }
|
||||
|
||||
/* Various browsers have various default styles for <h6>,
|
||||
sometimes ugly for our purposes, so it's best to set things
|
||||
like font-size and font-weight in out pasdoc.css explicitly. */
|
||||
h6.description_section {
|
||||
/* font-size 100% means that it has the same font size as the
|
||||
parent element, i.e. normal description text */
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
/* By default browsers usually have some large margin-bottom and
|
||||
margin-top for <h1-6> tags. In our case, margin-bottom is
|
||||
unnecessary, we want to visually show that description_section
|
||||
is closely related to content below. In this situation
|
||||
(where the font size is just as a normal text), smaller bottom
|
||||
margin seems to look good. */
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/* Style applied to Pascal code in documentation
|
||||
(e.g. produced by @longcode tag) } */
|
||||
span.pascal_string { color: #000080; }
|
||||
span.pascal_keyword { font-weight: bolder; }
|
||||
span.pascal_comment { color: #000080; font-style: italic; }
|
||||
span.pascal_compiler_comment { color: #008000; }
|
||||
span.pascal_numeric { }
|
||||
span.pascal_hex { }
|
||||
|
||||
p.hint_directive { color: red; }
|
||||
|
||||
input#search_text { }
|
||||
input#search_submit_button { }
|
||||
|
||||
acronym.mispelling { background-color: #ffa; }
|
||||
|
||||
/* Actually this reduces vertical space between *every* paragraph
|
||||
inside list with @itemSpacing(compact).
|
||||
While we would like to reduce this space only for the
|
||||
top of 1st and bottom of last paragraph within each list item.
|
||||
But, well, user probably will not do any paragraph breaks
|
||||
within a list with @itemSpacing(compact) anyway, so it's
|
||||
acceptable solution. */
|
||||
ul.compact_spacing p { margin-top: 0em; margin-bottom: 0em; }
|
||||
ol.compact_spacing p { margin-top: 0em; margin-bottom: 0em; }
|
||||
dl.compact_spacing p { margin-top: 0em; margin-bottom: 0em; }
|
||||
|
||||
/* Style for table created by @table tags:
|
||||
just some thin border.
|
||||
|
||||
This way we have some borders around the cells
|
||||
(so cells are visibly separated), but the border
|
||||
"blends with the background" so it doesn't look too ugly.
|
||||
Hopefully it looks satisfactory in most cases and for most
|
||||
people.
|
||||
|
||||
We add padding for cells, otherwise they look too close.
|
||||
This is normal thing to do when border-collapse is set to
|
||||
collapse (because this eliminates spacing between cells).
|
||||
*/
|
||||
table.table_tag { border-collapse: collapse; }
|
||||
table.table_tag td { border: 1pt solid gray; padding: 0.3em; }
|
||||
table.table_tag th { border: 1pt solid gray; padding: 0.3em; }
|
||||
|
||||
table.detail {
|
||||
border: 1pt solid gray;
|
||||
margin-top: 0.3em;
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
|
||||
.search-form { white-space: nowrap; }
|
||||
.search-input, .search-button { display: inline-block; vertical-align: middle; }
|
||||
|
||||
/* Do not make extra vertical space at the beginning/end of table cells.
|
||||
We need ">" selector, to not change paragraphs inside lists inside
|
||||
table cells. */
|
||||
table.table_tag td > p:first-child,
|
||||
table.table_tag th > p:first-child,
|
||||
td.itemdesc > p:first-child { margin-top: 0em; }
|
||||
|
||||
table.table_tag td > p:last-child,
|
||||
table.table_tag th > p:last-child,
|
||||
td.itemdesc > p:last-child { margin-bottom: 0em; }
|
Binary file not shown.
Before Width: | Height: | Size: 141 B |
Binary file not shown.
Before Width: | Height: | Size: 141 B |
Binary file not shown.
Before Width: | Height: | Size: 141 B |
Binary file not shown.
Before Width: | Height: | Size: 141 B |
@ -1,125 +0,0 @@
|
||||
import subprocess
|
||||
import os
|
||||
from datetime import datetime
|
||||
from colorama import *
|
||||
init() #colorama initialization
|
||||
|
||||
### task setup env
|
||||
DOIT_CONFIG = {'verbosity': 2, 'default_tasks': ['build']}
|
||||
|
||||
###############################################################################################
|
||||
############## CONFIGURATION ##################################################################
|
||||
###############################################################################################
|
||||
projects = [
|
||||
('samples\\01_global_logger\\global_logger.dproj','Win32'),
|
||||
('samples\\02_file_appender\\file_appender.dproj','Win32'),
|
||||
('samples\\03_console_appender\\console_appender.dproj','Win32'),
|
||||
('samples\\04_outputdebugstring_appender\\outputdebugstring_appender.dproj','Win32'),
|
||||
('samples\\05_vcl_appenders\\vcl_appenders.dproj','Win32'),
|
||||
('samples\\08_email_appender\\email_appender.dproj','Win32'),
|
||||
('samples\\10_multiple_appenders\\multiple_appenders.dproj','Win32'),
|
||||
('samples\\15_appenders_with_different_log_levels\\multi_appenders_different_loglevels.dproj','Win32'),
|
||||
('samples\\20_multiple_loggers\\multiple_loggers.dproj','Win32'),
|
||||
('samples\\50_custom_appender\\custom_appender.dproj','Win32'),
|
||||
('samples\\60_logging_inside_dll\\MainProgram.dproj','Win32'),
|
||||
('samples\\60_logging_inside_dll\\mydll.dproj','Win32'),
|
||||
('samples\\70_isapi_sample\\loggerproisapisample.dproj','Win32'),
|
||||
('samples\\90_remote_logging_with_redis\\REDISAppenderSample.dproj','Win32'),
|
||||
('samples\\90_remote_logging_with_redis\\redis_logs_viewer\\REDISLogsViewer.dproj','Win32'),
|
||||
('samples\\100_udp_syslog\\udp_syslog.dproj','Win32'),
|
||||
('samples\\110_rest_appender\RESTAppenderSample.dproj','Win32'),
|
||||
('samples\\110_rest_appender_mobile\RESTAppenderMobileSample.dproj','Android'),
|
||||
('samples\\120_elastic_search_appender\\ElasticSearchAppenderSample.dproj','Win32'),
|
||||
('samples\\rest_logs_collector\RESTLogsCollector.dproj','Win32')
|
||||
]
|
||||
|
||||
release_path = "BUILD"
|
||||
###############################################################################################
|
||||
############## END CONFIGURATION ##############################################################
|
||||
###############################################################################################
|
||||
|
||||
GlobalBuildVersion = 'DEV' #if we are building an actual release, this will be replaced
|
||||
|
||||
def header(headers):
|
||||
elements = None
|
||||
if type(headers).__name__ == 'str':
|
||||
elements = [headers]
|
||||
else:
|
||||
elements = headers
|
||||
|
||||
print(Style.BRIGHT + Back.WHITE + Fore.RED + "*" * 80 + Style.RESET_ALL)
|
||||
for txt in elements:
|
||||
s = '{:^80}'.format(txt)
|
||||
print(Style.BRIGHT + Back.WHITE + Fore.RED + s + Style.RESET_ALL)
|
||||
print(Style.BRIGHT + Back.WHITE + Fore.RED + "*" * 80 + Style.RESET_ALL)
|
||||
|
||||
|
||||
def buildProject(project, config = 'DEBUG'):
|
||||
project_file, platform = project
|
||||
header(["Building", project_file,"(config " + config + ")"])
|
||||
p = project_file.replace('.dproj', '.cfg')
|
||||
if os.path.isfile(p):
|
||||
if os.path.isfile(p + '.unused'):
|
||||
os.remove(p + '.unused')
|
||||
os.rename(p, p + '.unused')
|
||||
return subprocess.call(f"rsvars.bat & msbuild /t:Build /p:Config={config} /p:Platform={platform} \"{project_file}\"", shell=True) == 0
|
||||
|
||||
def buildProjects():
|
||||
res = True
|
||||
for project in projects:
|
||||
res &= buildProject(project)
|
||||
if not res:
|
||||
print("Failed " + project[0])
|
||||
return res
|
||||
|
||||
|
||||
def build_unit_tests():
|
||||
res = buildProject(('unittests\\UnitTests.dproj','Win32'), 'PLAINDUNITX')
|
||||
return res
|
||||
|
||||
|
||||
def create_build_tag(version):
|
||||
global GlobalBuildVersion
|
||||
GlobalBuildVersion = version
|
||||
header("BUILD VERSION: " + GlobalBuildVersion)
|
||||
f = open("VERSION.TXT","w")
|
||||
f.write("VERSION " + GlobalBuildVersion + "\n")
|
||||
f.write("BUILD DATETIME " + datetime.now().isoformat() + "\n")
|
||||
f.close()
|
||||
|
||||
#############################################################################################################################
|
||||
|
||||
def task_build():
|
||||
'''Use: doit build -v <VERSION> -> Builds all the projects. Then creates SFX archive.'''
|
||||
return {
|
||||
'actions': [
|
||||
create_build_tag,
|
||||
"echo %%date%% %%time:~0,8%% > LOGGERPRO-BUILD-TIMESTAMP.TXT",
|
||||
buildProjects,
|
||||
build_unit_tests,
|
||||
"unittests\\Win32\\PLAINDUNITX\\UnitTests.exe -exit:Continue"],
|
||||
'params':[{'name':'version',
|
||||
'short':'v',
|
||||
'long':'version',
|
||||
'type':str,
|
||||
'default':'DEVELOPMENT'}
|
||||
],
|
||||
'verbosity': 2
|
||||
}
|
||||
|
||||
def task_unittests():
|
||||
'''Use: doit unittests. Builds unittests project and run it.'''
|
||||
return {
|
||||
'actions': [
|
||||
build_unit_tests,
|
||||
"unittests\\Win32\\PLAINDUNITX\\UnitTests.exe -exit:Continue"
|
||||
],
|
||||
'params':[{'name':'version',
|
||||
'short':'v',
|
||||
'long':'version',
|
||||
'type':str,
|
||||
'default':'DEVELOPMENT'}
|
||||
],
|
||||
'verbosity': 2
|
||||
}
|
||||
|
@ -1,78 +0,0 @@
|
||||
[Main]
|
||||
StoreRelativePaths=1
|
||||
Language=en
|
||||
OutputDir=docs\
|
||||
GenerateFormat=0
|
||||
ProjectName=
|
||||
Verbosity=2
|
||||
ClassMembers_0=1
|
||||
ClassMembers_1=1
|
||||
ClassMembers_2=0
|
||||
ClassMembers_3=0
|
||||
ClassMembers_4=0
|
||||
ClassMembers_5=0
|
||||
ClassMembers_6=1
|
||||
ClassMembers_7=0
|
||||
ImplicitVisibility=0
|
||||
Sorting_0=0
|
||||
Sorting_1=0
|
||||
Sorting_2=0
|
||||
Sorting_3=0
|
||||
Sorting_4=0
|
||||
Sorting_5=0
|
||||
Sorting_6=0
|
||||
Sorting_7=0
|
||||
Sorting_8=0
|
||||
Sorting_9=0
|
||||
CssFileName=
|
||||
IntroductionFileName=
|
||||
ConclusionFileName=
|
||||
WriteUsesList=1
|
||||
AutoAbstract=0
|
||||
AutoLink=0
|
||||
HandleMacros=1
|
||||
UseTipueSearch=0
|
||||
LineBreakQuality=0
|
||||
SpecialMarkerTreatment=1
|
||||
Title=LoggerPro
|
||||
VizGraphClasses=0
|
||||
VizGraphUses=0
|
||||
CheckSpelling=0
|
||||
LatexGraphicsPackage=0
|
||||
|
||||
[Defines]
|
||||
Count=4
|
||||
Item_0=FPC
|
||||
Item_1=MSWINDOWS
|
||||
Item_2=WIN32
|
||||
Item_3=CPU386
|
||||
|
||||
[Header]
|
||||
Count=1
|
||||
Item_0=<h2>LoggerPro (1.0)</h2><p>A simple, pluggable and modern logging framework for Delphi</p>
|
||||
|
||||
[Footer]
|
||||
Count=1
|
||||
Item_0=Copyright 2016 Daniele Teti
|
||||
|
||||
[IncludeDirectories]
|
||||
Count=1
|
||||
Item_0=..\LoggerPro
|
||||
|
||||
[Files]
|
||||
Count=6
|
||||
Item_0=LoggerPro.ConsoleAppender.pas
|
||||
Item_1=LoggerPro.FileAppender.pas
|
||||
Item_2=LoggerPro.OutputDebugStringAppender.pas
|
||||
Item_3=LoggerPro.pas
|
||||
Item_4=LoggerPro.VCLMemoAppender.pas
|
||||
Item_5=LoggerPro.GlobalLogger.pas
|
||||
|
||||
[HyphenatedWords]
|
||||
Count=0
|
||||
|
||||
[SpecialMarkers]
|
||||
Count=0
|
||||
|
||||
[IgnoreWords]
|
||||
Count=0
|
@ -1,61 +0,0 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'LoggerPro SAMPLE'
|
||||
ClientHeight = 132
|
||||
ClientWidth = 584
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Button1: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'DEBUG'
|
||||
TabOrder = 0
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 151
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'INFO'
|
||||
TabOrder = 1
|
||||
OnClick = Button2Click
|
||||
end
|
||||
object Button3: TButton
|
||||
Left = 294
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'WARNING'
|
||||
TabOrder = 2
|
||||
OnClick = Button3Click
|
||||
end
|
||||
object Button4: TButton
|
||||
Left = 437
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'ERROR'
|
||||
TabOrder = 3
|
||||
OnClick = Button4Click
|
||||
end
|
||||
object Button5: TButton
|
||||
Left = 8
|
||||
Top = 71
|
||||
Width = 280
|
||||
Height = 57
|
||||
Caption = 'Multithread logging'
|
||||
TabOrder = 4
|
||||
OnClick = Button5Click
|
||||
end
|
||||
end
|
@ -1,93 +0,0 @@
|
||||
unit MainFormU;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
|
||||
System.Classes, Vcl.Graphics,
|
||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
Button3: TButton;
|
||||
Button4: TButton;
|
||||
Button5: TButton;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure Button3Click(Sender: TObject);
|
||||
procedure Button4Click(Sender: TObject);
|
||||
procedure Button5Click(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
// for fast&dirty logging, you can just include
|
||||
// the unit LoggerPro.GlobalLogger and start to log!
|
||||
LoggerPro.GlobalLogger;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TMainForm.Button1Click(Sender: TObject);
|
||||
begin
|
||||
Log.Debug('This is a debug message with TAG1', 'TAG1');
|
||||
Log.Debug('This is a debug message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button2Click(Sender: TObject);
|
||||
begin
|
||||
Log.Info('This is a info message with TAG1', 'TAG1');
|
||||
Log.Info('This is a info message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button3Click(Sender: TObject);
|
||||
begin
|
||||
Log.Warn('This is a warning message with TAG1', 'TAG1');
|
||||
Log.Warn('This is a warning message with TAG2', 'TAG2');
|
||||
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button4Click(Sender: TObject);
|
||||
begin
|
||||
Log.Error('This is an error message with TAG1', 'TAG1');
|
||||
Log.Error('This is an error message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button5Click(Sender: TObject);
|
||||
var
|
||||
lThreadProc: TProc;
|
||||
begin
|
||||
lThreadProc := procedure
|
||||
var
|
||||
I: Integer;
|
||||
lThreadID: String;
|
||||
begin
|
||||
lThreadID := IntToStr(TThread.CurrentThread.ThreadID);
|
||||
for I := 1 to 200 do
|
||||
begin
|
||||
Log.Debug('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
Log.Info('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
Log.Warn('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
Log.Error('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
end;
|
||||
end;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
end;
|
||||
|
||||
end.
|
@ -1,14 +0,0 @@
|
||||
program global_logger;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
MainFormU in 'MainFormU.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,60 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro;
|
||||
|
||||
function Log: ILogWriter;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.FileAppender;
|
||||
|
||||
var
|
||||
_Log: ILogWriter;
|
||||
|
||||
function Log: ILogWriter;
|
||||
begin
|
||||
Result := _Log;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
{ The TLoggerProFileAppender has its defaults defined as follows:
|
||||
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||
DEFAULT_MAX_BACKUP_FILE_COUNT = 5;
|
||||
DEFAULT_MAX_FILE_SIZE_KB = 1000;
|
||||
|
||||
You can override these dafaults passing parameters to the constructor.
|
||||
Here's some configuration examples:
|
||||
@longcode(#
|
||||
// Creates log in the same exe folder without PID in the filename
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5,
|
||||
[TFileAppenderOption.LogsInTheSameFolder])]);
|
||||
|
||||
// Creates log in the AppData/Roaming with PID in the filename
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5,
|
||||
[TFileAppenderOption.IncludePID])]);
|
||||
|
||||
// Creates log in the same folder with PID in the filename
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5,
|
||||
[TFileAppenderOption.IncludePID])]);
|
||||
#)
|
||||
}
|
||||
|
||||
// Creates log in the ..\..\ folder without PID in the filename
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5, '..\..', [])]);
|
||||
// Create logs in the exe' same folder
|
||||
// _Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5)]);
|
||||
|
||||
// Creates log in the AppData/Roaming with PID in the filename
|
||||
// _Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5,
|
||||
// [TFileAppenderOption.IncludePID])]);
|
||||
|
||||
// Creates log in the same folder with PID in the filename
|
||||
// _Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5,
|
||||
// [TFileAppenderOption.IncludePID])]);
|
||||
|
||||
end.
|
@ -1,15 +0,0 @@
|
||||
program file_appender;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
LoggerProConfig in 'LoggerProConfig.pas',
|
||||
MainFormU in '..\common\MainFormU.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,29 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro;
|
||||
|
||||
function Log: ILogWriter;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.ConsoleAppender, Winapi.Windows;
|
||||
|
||||
var
|
||||
_Log: ILogWriter;
|
||||
|
||||
function Log: ILogWriter;
|
||||
begin
|
||||
Result := _Log;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
_Log := BuildLogWriter([TLoggerProConsoleAppender.Create]);
|
||||
if not IsConsole then
|
||||
AllocConsole;
|
||||
|
||||
end.
|
@ -1,16 +0,0 @@
|
||||
program console_appender;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
LoggerProConfig in 'LoggerProConfig.pas',
|
||||
MainFormU in '..\common\MainFormU.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
ReportMemoryLeaksOnShutdown := True;
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,27 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro;
|
||||
|
||||
function Log: ILogWriter;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.OutputDebugStringAppender;
|
||||
|
||||
var
|
||||
_Log: ILogWriter;
|
||||
|
||||
function Log: ILogWriter;
|
||||
begin
|
||||
Result := _Log;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
_Log := BuildLogWriter([TLoggerProOutputDebugStringAppender.Create])
|
||||
|
||||
end.
|
@ -1,15 +0,0 @@
|
||||
program outputdebugstring_appender;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
LoggerProConfig in 'LoggerProConfig.pas',
|
||||
MainFormU in '..\common\MainFormU.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,133 +0,0 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'LoggerPro SAMPLE'
|
||||
ClientHeight = 535
|
||||
ClientWidth = 834
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Visible = True
|
||||
OnCreate = FormCreate
|
||||
DesignSize = (
|
||||
834
|
||||
535)
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Button1: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'DEBUG'
|
||||
TabOrder = 0
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 151
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'INFO'
|
||||
TabOrder = 1
|
||||
OnClick = Button2Click
|
||||
end
|
||||
object Button3: TButton
|
||||
Left = 294
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'WARNING'
|
||||
TabOrder = 2
|
||||
OnClick = Button3Click
|
||||
end
|
||||
object Button4: TButton
|
||||
Left = 437
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'ERROR'
|
||||
TabOrder = 3
|
||||
OnClick = Button4Click
|
||||
end
|
||||
object Button5: TButton
|
||||
Left = 8
|
||||
Top = 71
|
||||
Width = 280
|
||||
Height = 57
|
||||
Caption = 'Multithread logging'
|
||||
TabOrder = 4
|
||||
OnClick = Button5Click
|
||||
end
|
||||
object PageControl1: TPageControl
|
||||
Left = 8
|
||||
Top = 134
|
||||
Width = 818
|
||||
Height = 393
|
||||
ActivePage = tsListViewAppender
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
TabOrder = 5
|
||||
object tsListViewAppender: TTabSheet
|
||||
Caption = 'ListView Appender DEMO'
|
||||
object ListView1: TListView
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 810
|
||||
Height = 365
|
||||
Align = alClient
|
||||
Columns = <
|
||||
item
|
||||
AutoSize = True
|
||||
Caption = 'Application Logs'
|
||||
end>
|
||||
ColumnClick = False
|
||||
Ctl3D = False
|
||||
DoubleBuffered = True
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Consolas'
|
||||
Font.Style = []
|
||||
OwnerDraw = True
|
||||
RowSelect = True
|
||||
ParentDoubleBuffered = False
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
ViewStyle = vsReport
|
||||
end
|
||||
end
|
||||
object tsMemoAppender: TTabSheet
|
||||
Caption = 'Memo Appender DEMO'
|
||||
ImageIndex = 1
|
||||
ExplicitLeft = 0
|
||||
ExplicitTop = 0
|
||||
ExplicitWidth = 281
|
||||
ExplicitHeight = 165
|
||||
object Memo1: TMemo
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 810
|
||||
Height = 365
|
||||
Align = alClient
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -12
|
||||
Font.Name = 'Courier New'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
ScrollBars = ssVertical
|
||||
TabOrder = 0
|
||||
WordWrap = False
|
||||
ExplicitLeft = -535
|
||||
ExplicitTop = -228
|
||||
ExplicitWidth = 816
|
||||
ExplicitHeight = 393
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -1,117 +0,0 @@
|
||||
unit VCLAppendersFormU;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows,
|
||||
Winapi.Messages,
|
||||
System.SysUtils,
|
||||
System.Variants,
|
||||
System.Classes,
|
||||
Vcl.Graphics,
|
||||
Vcl.Controls,
|
||||
Vcl.Forms,
|
||||
Vcl.Dialogs,
|
||||
Vcl.StdCtrls,
|
||||
LoggerPro,
|
||||
Vcl.ComCtrls,
|
||||
System.ImageList,
|
||||
Vcl.ImgList;
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
Button3: TButton;
|
||||
Button4: TButton;
|
||||
Button5: TButton;
|
||||
PageControl1: TPageControl;
|
||||
tsListViewAppender: TTabSheet;
|
||||
tsMemoAppender: TTabSheet;
|
||||
Memo1: TMemo;
|
||||
ListView1: TListView;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure Button3Click(Sender: TObject);
|
||||
procedure Button4Click(Sender: TObject);
|
||||
procedure Button5Click(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
FLog: ILogWriter;
|
||||
{ Private declarations }
|
||||
public
|
||||
function Log: ILogWriter;
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.VCLMemoAppender,
|
||||
LoggerPro.VCLListViewAppender;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TMainForm.Button1Click(Sender: TObject);
|
||||
begin
|
||||
Log.Debug('This is a debug message with TAG1', 'TAG1');
|
||||
Log.Debug('This is a debug message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button2Click(Sender: TObject);
|
||||
begin
|
||||
Log.Info('This is a info message with TAG1', 'TAG1');
|
||||
Log.Info('This is a info message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button3Click(Sender: TObject);
|
||||
begin
|
||||
Log.Warn('This is a warning message with TAG1', 'TAG1');
|
||||
Log.Warn('This is a warning message with TAG2', 'TAG2');
|
||||
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button4Click(Sender: TObject);
|
||||
begin
|
||||
Log.Error('This is an error message with TAG1', 'TAG1');
|
||||
Log.Error('This is an error message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button5Click(Sender: TObject);
|
||||
var
|
||||
lThreadProc: TProc;
|
||||
begin
|
||||
lThreadProc := procedure
|
||||
var
|
||||
I: Integer;
|
||||
lThreadID: String;
|
||||
begin
|
||||
lThreadID := IntToStr(TThread.CurrentThread.ThreadID);
|
||||
for I := 1 to 50 do
|
||||
begin
|
||||
Log.Debug('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID, 'MULTITHREADING');
|
||||
Log.Info('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID, 'MULTITHREADING');
|
||||
Log.Warn('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID, 'MULTITHREADING');
|
||||
Log.Error('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID, 'MULTITHREADING');
|
||||
end;
|
||||
end;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
end;
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
// Let's create the local loggers for this form
|
||||
FLog := BuildLogWriter([TVCLListViewAppender.Create(ListView1), TVCLMemoLogAppender.Create(Memo1)])
|
||||
end;
|
||||
|
||||
function TMainForm.Log: ILogWriter;
|
||||
begin
|
||||
Result := FLog;
|
||||
end;
|
||||
|
||||
end.
|
@ -1,14 +0,0 @@
|
||||
program vcl_appenders;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
VCLAppendersFormU in 'VCLAppendersFormU.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,81 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro;
|
||||
|
||||
function Log: ILogWriter;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.FileAppender,
|
||||
LoggerPro.EMailAppender,
|
||||
LoggerPro.OutputDebugStringAppender,
|
||||
System.SysUtils,
|
||||
idSMTP, System.IOUtils,
|
||||
IdIOHandlerStack, IdSSL,
|
||||
IdSSLOpenSSL, IdExplicitTLSClientServerBase;
|
||||
|
||||
var
|
||||
_Log: ILogWriter;
|
||||
|
||||
const
|
||||
USE_SSL = true;
|
||||
|
||||
function Log: ILogWriter;
|
||||
begin
|
||||
Result := _Log;
|
||||
end;
|
||||
|
||||
function GetSMTP: TidSMTP;
|
||||
begin
|
||||
Result := TidSMTP.Create(nil);
|
||||
try
|
||||
if USE_SSL then
|
||||
begin
|
||||
Result.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(Result);
|
||||
end;
|
||||
Result.Host := 'smtp.gmail.com';
|
||||
Result.Port := 25;
|
||||
Result.UseTLS := TIdUseTLS.utUseImplicitTLS;
|
||||
Result.AuthType := satDefault;
|
||||
Result.Username := 'daniele.teti@gmail.com';
|
||||
if not TFile.Exists('config.txt') then
|
||||
raise Exception.Create('Create a "config.txt" file containing the password');
|
||||
Result.Password := TFile.ReadAllText('config.txt'); // '<yourpassword>';
|
||||
except
|
||||
Result.Free;
|
||||
raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure SetupLogger;
|
||||
const
|
||||
|
||||
{$IFDEF DEBUG}
|
||||
|
||||
LOG_LEVEL = TLogType.Debug;
|
||||
|
||||
{$ELSE}
|
||||
|
||||
LOG_LEVEL = TLogType.Warning;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
var
|
||||
lEmailAppender: ILogAppender;
|
||||
begin
|
||||
lEmailAppender := TLoggerProEMailAppender.Create(GetSMTP, 'LoggerPro<daniele.teti@gmail.com>', 'd.teti@bittime.it');
|
||||
lEmailAppender.SetLogLevel(TLogType.Error);
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create,
|
||||
lEmailAppender,
|
||||
TLoggerProOutputDebugStringAppender.Create], nil, LOG_LEVEL);
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
SetupLogger;
|
||||
|
||||
end.
|
@ -1,62 +0,0 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'LoggerPro SAMPLE'
|
||||
ClientHeight = 140
|
||||
ClientWidth = 584
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Visible = True
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Button1: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'DEBUG'
|
||||
TabOrder = 0
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 151
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'INFO'
|
||||
TabOrder = 1
|
||||
OnClick = Button2Click
|
||||
end
|
||||
object Button3: TButton
|
||||
Left = 294
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'WARNING'
|
||||
TabOrder = 2
|
||||
OnClick = Button3Click
|
||||
end
|
||||
object Button4: TButton
|
||||
Left = 437
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'ERROR'
|
||||
TabOrder = 3
|
||||
OnClick = Button4Click
|
||||
end
|
||||
object Button5: TButton
|
||||
Left = 8
|
||||
Top = 71
|
||||
Width = 280
|
||||
Height = 57
|
||||
Caption = 'Multithread logging'
|
||||
TabOrder = 4
|
||||
OnClick = Button5Click
|
||||
end
|
||||
end
|
@ -1,88 +0,0 @@
|
||||
unit MainFormU;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
|
||||
System.Classes, Vcl.Graphics,
|
||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, LoggerPro;
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
Button3: TButton;
|
||||
Button4: TButton;
|
||||
Button5: TButton;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure Button3Click(Sender: TObject);
|
||||
procedure Button4Click(Sender: TObject);
|
||||
procedure Button5Click(Sender: TObject);
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.VCLMemoAppender, LoggerProConfig;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
|
||||
procedure TMainForm.Button1Click(Sender: TObject);
|
||||
begin
|
||||
Log.Debug('This is a debug message with TAG1', 'TAG1');
|
||||
Log.Debug('This is a debug message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button2Click(Sender: TObject);
|
||||
begin
|
||||
Log.Info('This is a info message with TAG1', 'TAG1');
|
||||
Log.Info('This is a info message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button3Click(Sender: TObject);
|
||||
begin
|
||||
Log.Warn('This is a warning message with TAG1', 'TAG1');
|
||||
Log.Warn('This is a warning message with TAG2', 'TAG2');
|
||||
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button4Click(Sender: TObject);
|
||||
begin
|
||||
Log.Error('This is an error message with TAG1', 'TAG1');
|
||||
Log.Error('This is an error message with TAG2', 'TAG2');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button5Click(Sender: TObject);
|
||||
var
|
||||
lThreadProc: TProc;
|
||||
begin
|
||||
lThreadProc := procedure
|
||||
var
|
||||
I: Integer;
|
||||
lThreadID: String;
|
||||
begin
|
||||
lThreadID := IntToStr(TThread.Current.ThreadID);
|
||||
for I := 1 to 200 do
|
||||
begin
|
||||
Log.Debug('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
Log.Info('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
Log.Warn('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
Log.Error('log message ' + TimeToStr(now) + ' ThreadID: ' + lThreadID,
|
||||
'MULTITHREADING');
|
||||
end;
|
||||
end;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
end;
|
||||
|
||||
end.
|
@ -1,15 +0,0 @@
|
||||
program email_appender;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
MainFormU in 'MainFormU.pas' {MainForm},
|
||||
LoggerProConfig in 'LoggerProConfig.pas';
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
@ -1,574 +0,0 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{3EC88B82-7B27-4D69-8E7E-632D33F11C42}</ProjectGuid>
|
||||
<ProjectVersion>18.2</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>email_appender.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
<TargetedPlatforms>1</TargetedPlatforms>
|
||||
<AppType>Application</AppType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||
<Base_Win32>true</Base_Win32>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||
<Base_Win64>true</Base_Win64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||
<CfgParent>Cfg_1</CfgParent>
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
|
||||
<Cfg_2_Win32>true</Cfg_2_Win32>
|
||||
<CfgParent>Cfg_2</CfgParent>
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
|
||||
<SanitizedProjectName>email_appender</SanitizedProjectName>
|
||||
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
|
||||
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||
<DCC_E>false</DCC_E>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_F>false</DCC_F>
|
||||
<DCC_K>false</DCC_K>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
|
||||
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
|
||||
<VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
|
||||
<DCC_UnitSearchPath>..\..\;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
|
||||
<DCC_UsePackage>DBXSqliteDriver;DBXDb2Driver;dxCoreRS23;vclactnband;frxe23;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;JvPluginSystem;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;dclRBDBE1723;vcltouch;JvBands;vcldb;rbDB1723;svn;dxWizardControlRS23;dxSkinMcSkinRS23;dxPScxCommonRS23;JvJans;Intraweb;dxSkinOffice2007BlueRS23;rbIBE1723;dxBarRS23;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;JvDotNetCtrls;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;rbDBE1723;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;vclx;rbCIDE1723;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;rbRAP1723;JvHMI;FireDACMySQLDriver;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;DBXSybaseASEDriver;IndyIPServer;dxSkinPumpkinRS23;IndySystem;dsnapcon;cxTreeListdxBarPopupMenuRS23;dclRBIBE1723;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSkinLilianRS23;Jcl;rbADO1723;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;rbUSER1723;DBXOdbcDriver;FireDACTDataDriver;FMXTee;ipstudiowinclient;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;AsyncProDR;JvManagedThreads;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;DTKANPRPackage;dxSkinHighContrastRS23;rtl;dxSkinSevenClassicRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;CodeSiteExpressPkg;dxSkinTheAsphaltWorldRS23;JvSystem;SampleListViewMultiDetailAppearancePackage;dxRichEditControlRS23;JvStdCtrls;JvTimeFramework;ipstudiowin;appanalytics;cxPivotGridRS23;rbUSERDesign1723;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;frxDB23;vcldbx;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;rbDIDE1723;JvPascalInterpreter;JvDocking;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;frx23;dxSpellCheckerRS23;JvControls;dxSkinsdxBarPainterRS23;JvPrintPreview;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;rbRTL1723;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;svnui;dxmdsRS23;dxSkinLiquidSkyRS23;dxdbtrRS23;dxSkinSpringTimeRS23;dxPSDBTeeChartRS23;JvGlobus;HOAsysR;dxSkinscxPCPainterRS23;dxPSCoreRS23;DBXMSSQLDriver;JvMM;dxSkinXmas2008BlueRS23;rbDAD1723;DatasnapConnectorsFreePascal;bindcompfmx;JvNet;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;JvAppFrm;ipstudiowinwordxp;rbTC1723;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;DelphiCookbookListViewAppearance;dxServerModeRS23;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;JvWizards;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;UIBD21Win32R;JvPageComps;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;bdertl;JvDB;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;frxTee23;dxTileControlRS23;JclDeveloperTools;cxGridRS23;CPortLibDXE;FireDACOracleDriver;DBXMySQLDriver;JvCmp;rbFireDAC1723;DBXFirebirdDriver;FireDACCommonDriver;rbTCUI1723;LockBoxDR;inet;IndyIPCommon;JvCustom;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;JvXPCtrls;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;rbRest1723;TSG5201;dxSkinMoneyTwinsRS23;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;JvCore;dxFireDACServerModeRS23;dxSkinBlueRS23;OverbyteIcsD10SRun;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;JvDlgs;JvRuntimeDesign;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;dxSkinSharpRS23;DataSnapServer;ibxbindings;cxPivotGridOLAPRS23;rbIDE1723;vclwinx;FireDACDSDriver;dxSkinBlueprintRS23;dxSkinOffice2007BlackRS23;CustomIPTransport;vcldsnap;rbBDE1723;dxSkinOffice2013LightGrayRS23;bindcomp;DBXInformixDriver;officeXPrt;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;dclRBADO1723;vclribbon;dbxcds;KernowSoftwareFMX;adortl;dclRBFireDAC1723;dclRBE1723;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;JclContainers;dxSkinVisualStudio2013DarkRS23;rbRCL1723;dxSkinscxSchedulerPainterRS23;rbRIDE1723;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||
<DCC_ExeOutput>.\bin</DCC_ExeOutput>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
|
||||
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
|
||||
<DCC_UsePackage>DBXSqliteDriver;DBXDb2Driver;dxCoreRS23;vclactnband;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;vcltouch;vcldb;dxWizardControlRS23;dxSkinMcSkinRS23;dxPScxCommonRS23;Intraweb;dxSkinOffice2007BlueRS23;dxBarRS23;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;vclx;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;FireDACMySQLDriver;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;DBXSybaseASEDriver;IndyIPServer;dxSkinPumpkinRS23;IndySystem;dsnapcon;cxTreeListdxBarPopupMenuRS23;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSkinLilianRS23;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;DBXOdbcDriver;FireDACTDataDriver;FMXTee;ipstudiowinclient;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;AsyncProDR;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;dxSkinHighContrastRS23;rtl;dxSkinSevenClassicRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;dxSkinTheAsphaltWorldRS23;dxRichEditControlRS23;ipstudiowin;appanalytics;cxPivotGridRS23;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;dxSpellCheckerRS23;dxSkinsdxBarPainterRS23;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;dxmdsRS23;dxSkinLiquidSkyRS23;dxdbtrRS23;dxSkinSpringTimeRS23;dxPSDBTeeChartRS23;dxSkinscxPCPainterRS23;dxPSCoreRS23;DBXMSSQLDriver;dxSkinXmas2008BlueRS23;DatasnapConnectorsFreePascal;bindcompfmx;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;dxServerModeRS23;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;dxTileControlRS23;cxGridRS23;FireDACOracleDriver;DBXMySQLDriver;DBXFirebirdDriver;FireDACCommonDriver;LockBoxDR;inet;IndyIPCommon;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;dxSkinMoneyTwinsRS23;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;dxFireDACServerModeRS23;dxSkinBlueRS23;OverbyteIcsD10SRun;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;dxSkinSharpRS23;DataSnapServer;ibxbindings;cxPivotGridOLAPRS23;vclwinx;FireDACDSDriver;dxSkinBlueprintRS23;dxSkinOffice2007BlackRS23;CustomIPTransport;vcldsnap;dxSkinOffice2013LightGrayRS23;bindcomp;DBXInformixDriver;officeXPrt;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;vclribbon;dbxcds;adortl;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;dxSkinVisualStudio2013DarkRS23;dxSkinscxSchedulerPainterRS23;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
<DCC_DebugDCUs>true</DCC_DebugDCUs>
|
||||
<DCC_Optimize>false</DCC_Optimize>
|
||||
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||
<BT_BuildType>Debug</BT_BuildType>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<AppEnableHighDPI>true</AppEnableHighDPI>
|
||||
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||
<VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_DebugInformation>0</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
|
||||
<AppEnableHighDPI>true</AppEnableHighDPI>
|
||||
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="$(MainSource)">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="MainFormU.pas">
|
||||
<Form>MainForm</Form>
|
||||
<FormType>dfm</FormType>
|
||||
</DCCReference>
|
||||
<DCCReference Include="LoggerProConfig.pas"/>
|
||||
<BuildConfiguration Include="Release">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType>Application</Borland.ProjectType>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">email_appender.dpr</Source>
|
||||
</Source>
|
||||
<Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k250.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp250.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k250.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\dclofficexp250.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
</Excluded_Packages>
|
||||
</Delphi.Personality>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="Win32\Debug\email_appender.exe" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>email_appender.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidClassesDexFile">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>classes</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidGDBServer">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidLibnativeArmeabiFile">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\mips</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidLibnativeX86File"/>
|
||||
<DeployClass Name="AndroidServiceOutput">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashImageDef">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStyles">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_DefaultAppIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_LauncherIcon144">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_LauncherIcon36">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-ldpi</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_LauncherIcon48">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_LauncherIcon72">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_LauncherIcon96">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_SplashImage426">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-small</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_SplashImage470">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-normal</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_SplashImage640">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-large</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_SplashImage960">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DependencyFramework">
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.framework</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DependencyModule">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
<Extensions>.dll;.bpl</Extensions>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Required="true" Name="DependencyPackage">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
<Extensions>.bpl</Extensions>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="File">
|
||||
<Platform Name="Android">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1024">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1536">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2048">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch768">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch320">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch640">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch640x1136">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectAndroidManifest">
|
||||
<Platform Name="Android">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSDeviceDebug">
|
||||
<Platform Name="iOSDevice32">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSDeviceResourceRules">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSEntitlements">
|
||||
<Platform Name="iOSDevice32">
|
||||
<RemoteDir>..\</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSInfoPList">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSResource">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOSXEntitlements">
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>..\</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOSXInfoPList">
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOSXResource">
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Required="true" Name="ProjectOutput">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Linux64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectUWPManifest">
|
||||
<Platform Name="Win32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="UWP_DelphiLogo150">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="UWP_DelphiLogo44">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
</Deployment>
|
||||
<Platforms>
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
||||
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
|
||||
</Project>
|
@ -1,30 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro, LoggerPro.UDPSyslogAppender;
|
||||
|
||||
var
|
||||
Log: ILogWriter;
|
||||
Appender: TLoggerProUDPSyslogAppender;
|
||||
|
||||
implementation
|
||||
|
||||
initialization
|
||||
|
||||
Appender := TLoggerProUDPSyslogAppender.Create(
|
||||
'127.0.0.1'
|
||||
, 5114 //UDPClientPort.Value
|
||||
, 'COMPUTER'
|
||||
, 'USER'
|
||||
, 'EXE'
|
||||
, '0.0.1'
|
||||
, ''
|
||||
, True
|
||||
, False
|
||||
);
|
||||
|
||||
Log := BuildLogWriter([Appender]);
|
||||
|
||||
end.
|
@ -1,166 +0,0 @@
|
||||
object FUDPServerClientForm: TFUDPServerClientForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'UDP Server & Client'
|
||||
ClientHeight = 624
|
||||
ClientWidth = 1138
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Label1: TLabel
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 1138
|
||||
Height = 19
|
||||
Align = alTop
|
||||
Caption = 'Switch on the UDP server to listen to broadcasts on 127.0.0.1.'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -16
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ExplicitWidth = 442
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 0
|
||||
Top = 19
|
||||
Width = 1138
|
||||
Height = 19
|
||||
Align = alTop
|
||||
Caption =
|
||||
'Also switch on the UDP client to start broadcasting logs to 127.' +
|
||||
'0.0.1.'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -16
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ExplicitWidth = 490
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 0
|
||||
Top = 38
|
||||
Width = 1138
|
||||
Height = 19
|
||||
Align = alTop
|
||||
Caption = 'Watch server log below to see received syslog messages.'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -16
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ExplicitWidth = 402
|
||||
end
|
||||
object UDPServerReceived: TMemo
|
||||
Left = 0
|
||||
Top = 170
|
||||
Width = 1138
|
||||
Height = 454
|
||||
Align = alClient
|
||||
Color = clBackground
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clLime
|
||||
Font.Height = -16
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
ScrollBars = ssVertical
|
||||
TabOrder = 0
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
Top = 57
|
||||
Width = 1138
|
||||
Height = 113
|
||||
Align = alTop
|
||||
BevelInner = bvLowered
|
||||
TabOrder = 1
|
||||
object Label4: TLabel
|
||||
Left = 8
|
||||
Top = 6
|
||||
Width = 73
|
||||
Height = 13
|
||||
Caption = 'UDP Client Port'
|
||||
end
|
||||
object Label5: TLabel
|
||||
Left = 240
|
||||
Top = 6
|
||||
Width = 78
|
||||
Height = 13
|
||||
Caption = 'UDP Server Port'
|
||||
end
|
||||
object UDPServerControl: TRadioGroup
|
||||
Left = 367
|
||||
Top = 2
|
||||
Width = 100
|
||||
Height = 105
|
||||
Caption = 'UDP Server'
|
||||
ItemIndex = 1
|
||||
Items.Strings = (
|
||||
'On'
|
||||
'Off')
|
||||
TabOrder = 0
|
||||
OnClick = UDPServerControlClick
|
||||
end
|
||||
object UDPClientControl: TRadioGroup
|
||||
Left = 134
|
||||
Top = 2
|
||||
Width = 100
|
||||
Height = 105
|
||||
Caption = 'UDP Client'
|
||||
ItemIndex = 1
|
||||
Items.Strings = (
|
||||
'On'
|
||||
'Off')
|
||||
TabOrder = 1
|
||||
OnClick = UDPClientControlClick
|
||||
end
|
||||
object UDPClientPort: TSpinEdit
|
||||
Left = 8
|
||||
Top = 25
|
||||
Width = 121
|
||||
Height = 22
|
||||
MaxValue = 0
|
||||
MinValue = 0
|
||||
TabOrder = 2
|
||||
Value = 5114
|
||||
end
|
||||
object UDPServerPort: TSpinEdit
|
||||
Left = 240
|
||||
Top = 25
|
||||
Width = 121
|
||||
Height = 22
|
||||
MaxValue = 0
|
||||
MinValue = 0
|
||||
TabOrder = 3
|
||||
Value = 5114
|
||||
end
|
||||
end
|
||||
object IdUDPServer: TIdUDPServer
|
||||
Bindings = <
|
||||
item
|
||||
IP = '127.0.0.1'
|
||||
Port = 5114
|
||||
end>
|
||||
DefaultPort = 0
|
||||
OnUDPRead = IdUDPServerUDPRead
|
||||
Left = 536
|
||||
Top = 8
|
||||
end
|
||||
object UDPClientTimer: TTimer
|
||||
Enabled = False
|
||||
OnTimer = UDPClientTimerTimer
|
||||
Left = 616
|
||||
Top = 8
|
||||
end
|
||||
end
|
@ -1,97 +0,0 @@
|
||||
unit UDPServerClientForm;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
|
||||
IdUDPBase, IdUDPServer, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Samples.Spin,
|
||||
IdGlobal, IdSocketHandle, LoggerPro.UDPSyslogAppender;
|
||||
|
||||
type
|
||||
TFUDPServerClientForm = class(TForm)
|
||||
IdUDPServer: TIdUDPServer;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
UDPServerReceived: TMemo;
|
||||
Panel1: TPanel;
|
||||
UDPServerControl: TRadioGroup;
|
||||
UDPClientControl: TRadioGroup;
|
||||
UDPClientPort: TSpinEdit;
|
||||
Label4: TLabel;
|
||||
Label5: TLabel;
|
||||
UDPServerPort: TSpinEdit;
|
||||
UDPClientTimer: TTimer;
|
||||
procedure UDPClientTimerTimer(Sender: TObject);
|
||||
procedure UDPClientControlClick(Sender: TObject);
|
||||
procedure UDPServerControlClick(Sender: TObject);
|
||||
procedure IdUDPServerUDPRead(AThread: TIdUDPListenerThread;
|
||||
const AData: TIdBytes; ABinding: TIdSocketHandle);
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
FUDPServerClientForm: TFUDPServerClientForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro, LoggerProConfig, Math;
|
||||
|
||||
const
|
||||
STATUS_ON = 0;
|
||||
STATUS_OFF = 1;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
function GetPIDByHWND(const hWnd: THandle): THandle;
|
||||
var
|
||||
PID: DWORD;
|
||||
begin
|
||||
Result := 0;
|
||||
if hWnd = 0 then Exit;
|
||||
GetWindowThreadProcessID(hWnd, @PID);
|
||||
Result := PID;
|
||||
end;
|
||||
|
||||
procedure TFUDPServerClientForm.IdUDPServerUDPRead(
|
||||
AThread: TIdUDPListenerThread; const AData: TIdBytes;
|
||||
ABinding: TIdSocketHandle);
|
||||
begin
|
||||
UDPServerReceived.Lines.Add(BytesToString(AData, IndyTextEncoding_UTF8));
|
||||
UDPServerReceived.Lines.Add('----------------');
|
||||
SendMessage(UDPServerReceived.Handle, EM_LINESCROLL, 0, UDPServerReceived.Lines.Count);
|
||||
end;
|
||||
|
||||
procedure TFUDPServerClientForm.UDPClientControlClick(Sender: TObject);
|
||||
begin
|
||||
UDPClientTimer.Enabled := UDPClientControl.ItemIndex = STATUS_ON;
|
||||
if not UDPClientTimer.Enabled then Exit;
|
||||
|
||||
Appender.ProcID := IntToStr(GetPIDByHWND(Application.Handle));
|
||||
Appender.Port := UDPClientPort.Value;
|
||||
Appender.UserName := GetEnvironmentVariable('USERNAME');
|
||||
Appender.HostName := GetEnvironmentVariable('COMPUTERNAME');
|
||||
Appender.Application := ExtractFileName(ParamStr(0));
|
||||
end;
|
||||
|
||||
procedure TFUDPServerClientForm.UDPClientTimerTimer(Sender: TObject);
|
||||
begin
|
||||
case RandomRange(0, 5) of
|
||||
0: Log.Debug('debug message', 'DEBUG');
|
||||
1: Log.Info('info message', 'INFO');
|
||||
2: Log.Warn('warn message', 'WARN');
|
||||
3: Log.Error('error message', 'ERROR');
|
||||
4: Log.Info('Some Access Violation', 'INFO');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFUDPServerClientForm.UDPServerControlClick(Sender: TObject);
|
||||
begin
|
||||
IdUDPServer.Bindings[0].Port := UDPServerPort.Value;
|
||||
IdUDPServer.Active := UDPServerControl.ItemIndex = STATUS_ON;
|
||||
end;
|
||||
|
||||
end.
|
@ -1,15 +0,0 @@
|
||||
program udp_syslog;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
UDPServerClientForm in 'UDPServerClientForm.pas' {FUDPServerClientForm},
|
||||
LoggerProConfig in 'LoggerProConfig.pas';
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TFUDPServerClientForm, FUDPServerClientForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,42 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro;
|
||||
|
||||
function Log: ILogWriter;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.FileAppender,
|
||||
LoggerPro.ConsoleAppender,
|
||||
LoggerPro.OutputDebugStringAppender;
|
||||
|
||||
var
|
||||
_Log: ILogWriter;
|
||||
|
||||
function Log: ILogWriter;
|
||||
begin
|
||||
Result := _Log;
|
||||
end;
|
||||
|
||||
procedure SetupLogger;
|
||||
const
|
||||
{$IFDEF DEBUG}
|
||||
LOG_LEVEL = TLogType.Debug;
|
||||
{$ELSE}
|
||||
LOG_LEVEL = TLogType.Warning;
|
||||
{$ENDIF}
|
||||
begin
|
||||
_Log := BuildLogWriter([TLoggerProFileAppender.Create,
|
||||
TLoggerProConsoleAppender.Create,
|
||||
TLoggerProOutputDebugStringAppender.Create], nil, LOG_LEVEL);
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
SetupLogger;
|
||||
|
||||
end.
|
@ -1,16 +0,0 @@
|
||||
program multiple_appenders;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
LoggerProConfig in 'LoggerProConfig.pas',
|
||||
MainFormU in '..\common\MainFormU.pas' {MainForm};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
ReportMemoryLeaksOnShutdown := True;
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,70 +0,0 @@
|
||||
unit LoggerProConfig;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
LoggerPro;
|
||||
|
||||
const
|
||||
{$IF Defined(MSWINDOWS)}
|
||||
REST_LOGS_COLLECTOR_URL = 'http://localhost:8080';
|
||||
{$ENDIF}
|
||||
{$IF Defined(Android)}
|
||||
REST_LOGS_COLLECTOR_URL = 'http://192.168.1.7:8080';
|
||||
{$ENDIF}
|
||||
|
||||
function Log: ILogWriter;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LoggerPro.RESTAppender,
|
||||
LoggerPro.FileAppender,
|
||||
System.Net.HttpClient,
|
||||
System.SysUtils;
|
||||
|
||||
var
|
||||
_Log: ILogWriter;
|
||||
_Events: TLoggerProEventsHandler;
|
||||
_RESTAppender: ILogAppender;
|
||||
|
||||
function Log: ILogWriter;
|
||||
begin
|
||||
Result := _Log;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
_Events := TLoggerProEventsHandler.Create;
|
||||
_Events.OnAppenderError :=
|
||||
procedure(const AppenderClassName: string; const aFailedLogItem: TLogItem;
|
||||
const Reason: TLogErrorReason; var Action: TLogErrorAction)
|
||||
begin
|
||||
Action := TLogErrorAction.DiscardOlder;
|
||||
end;
|
||||
|
||||
DefaultLoggerProAppenderQueueSize := 10;
|
||||
_RESTAppender := TLoggerProRESTAppender.Create(REST_LOGS_COLLECTOR_URL + '/api/logs');
|
||||
TLoggerProRESTAppender(_RESTAppender).OnNetSendError :=
|
||||
procedure(const Sender: TObject; const LogItem: TLogItem; const NetError: Exception;
|
||||
var RetryCount: Integer)
|
||||
begin
|
||||
// retries to send log for 5 times, then discard the logitem
|
||||
if RetryCount = 5 then
|
||||
begin
|
||||
RetryCount := 0
|
||||
end
|
||||
else
|
||||
begin
|
||||
Inc(RetryCount);
|
||||
end;
|
||||
end;
|
||||
|
||||
_Log := BuildLogWriter([_RESTAppender, TLoggerProFileAppender.Create], _Events);
|
||||
|
||||
finalization
|
||||
|
||||
_Log := nil;
|
||||
_Events.Free;
|
||||
|
||||
end.
|
@ -1,62 +0,0 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'LoggerPro SAMPLE'
|
||||
ClientHeight = 142
|
||||
ClientWidth = 584
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Visible = True
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Button1: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'DEBUG'
|
||||
TabOrder = 0
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 151
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'INFO'
|
||||
TabOrder = 1
|
||||
OnClick = Button2Click
|
||||
end
|
||||
object Button3: TButton
|
||||
Left = 294
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'WARNING'
|
||||
TabOrder = 2
|
||||
OnClick = Button3Click
|
||||
end
|
||||
object Button4: TButton
|
||||
Left = 437
|
||||
Top = 8
|
||||
Width = 137
|
||||
Height = 57
|
||||
Caption = 'ERROR'
|
||||
TabOrder = 3
|
||||
OnClick = Button4Click
|
||||
end
|
||||
object Button5: TButton
|
||||
Left = 8
|
||||
Top = 71
|
||||
Width = 280
|
||||
Height = 57
|
||||
Caption = 'Multithread logging'
|
||||
TabOrder = 4
|
||||
OnClick = Button5Click
|
||||
end
|
||||
end
|
@ -1,91 +0,0 @@
|
||||
unit RESTAppenderFormU;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows,
|
||||
Winapi.Messages,
|
||||
System.SysUtils,
|
||||
System.Variants,
|
||||
System.Classes,
|
||||
Vcl.Graphics,
|
||||
Vcl.Controls,
|
||||
Vcl.Forms,
|
||||
Vcl.Dialogs,
|
||||
Vcl.StdCtrls,
|
||||
LoggerPro,
|
||||
Vcl.ExtCtrls;
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
Button3: TButton;
|
||||
Button4: TButton;
|
||||
Button5: TButton;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure Button3Click(Sender: TObject);
|
||||
procedure Button4Click(Sender: TObject);
|
||||
procedure Button5Click(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
public
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
uses
|
||||
LoggerProConfig;
|
||||
|
||||
procedure TMainForm.Button1Click(Sender: TObject);
|
||||
begin
|
||||
Log.Debug('This is a debug message with TAG1', 'TAG1');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button2Click(Sender: TObject);
|
||||
begin
|
||||
Log.Info('This is a info message with TAG1', 'TAG1');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button3Click(Sender: TObject);
|
||||
begin
|
||||
Log.Warn('This is a warning message with TAG1', 'TAG1');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button4Click(Sender: TObject);
|
||||
begin
|
||||
Log.Error('This is a error message with TAG1', 'TAG1');
|
||||
end;
|
||||
|
||||
procedure TMainForm.Button5Click(Sender: TObject);
|
||||
var
|
||||
lThreadProc: TProc;
|
||||
begin
|
||||
lThreadProc := procedure
|
||||
var
|
||||
I: Integer;
|
||||
lThreadID: string;
|
||||
begin
|
||||
lThreadID := IntToStr(TThread.Current.ThreadID);
|
||||
for I := 1 to 100 do
|
||||
begin
|
||||
Log.Debug('log message %s ThreadID: %s', [TimeToStr(now), lThreadID], 'MULTITHREADING');
|
||||
Log.Info('log message %s ThreadID: %s', [TimeToStr(now), lThreadID], 'MULTITHREADING');
|
||||
Log.Warn('log message %s ThreadID: %s', [TimeToStr(now), lThreadID], 'MULTITHREADING');
|
||||
Log.Error('log message %s ThreadID: %s', [TimeToStr(now), lThreadID], 'MULTITHREADING');
|
||||
end;
|
||||
end;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
TThread.CreateAnonymousThread(lThreadProc).Start;
|
||||
end;
|
||||
|
||||
end.
|
@ -1,16 +0,0 @@
|
||||
program RESTAppenderSample;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
RESTAppenderFormU in 'RESTAppenderFormU.pas' {MainForm},
|
||||
LoggerProConfig in 'LoggerProConfig.pas',
|
||||
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas';
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
File diff suppressed because it is too large
Load Diff
@ -1,48 +0,0 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{5BA437FC-4365-4824-8F39-36A3387CD280}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Projects Include="RESTAppenderSample.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
<Projects Include="..\rest_logs_collector\RESTLogsCollector.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Default.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType/>
|
||||
<BorlandProject>
|
||||
<Default.Personality/>
|
||||
</BorlandProject>
|
||||
</ProjectExtensions>
|
||||
<Target Name="RESTAppenderSample">
|
||||
<MSBuild Projects="RESTAppenderSample.dproj"/>
|
||||
</Target>
|
||||
<Target Name="RESTAppenderSample:Clean">
|
||||
<MSBuild Projects="RESTAppenderSample.dproj" Targets="Clean"/>
|
||||
</Target>
|
||||
<Target Name="RESTAppenderSample:Make">
|
||||
<MSBuild Projects="RESTAppenderSample.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="RESTLogsCollector">
|
||||
<MSBuild Projects="..\rest_logs_collector\RESTLogsCollector.dproj"/>
|
||||
</Target>
|
||||
<Target Name="RESTLogsCollector:Clean">
|
||||
<MSBuild Projects="..\rest_logs_collector\RESTLogsCollector.dproj" Targets="Clean"/>
|
||||
</Target>
|
||||
<Target Name="RESTLogsCollector:Make">
|
||||
<MSBuild Projects="..\rest_logs_collector\RESTLogsCollector.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="Build">
|
||||
<CallTarget Targets="RESTAppenderSample;RESTLogsCollector"/>
|
||||
</Target>
|
||||
<Target Name="Clean">
|
||||
<CallTarget Targets="RESTAppenderSample:Clean;RESTLogsCollector:Clean"/>
|
||||
</Target>
|
||||
<Target Name="Make">
|
||||
<CallTarget Targets="RESTAppenderSample:Make;RESTLogsCollector:Make"/>
|
||||
</Target>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
|
||||
</Project>
|
@ -1,54 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- BEGIN_INCLUDE(manifest) -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.embarcadero.RESTAppenderMobileSample"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0.0"
|
||||
android:installLocation="auto">
|
||||
|
||||
<!-- This is the platform API where NativeActivity was introduced. -->
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="True"/>
|
||||
<application android:persistent="False"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:restoreAnyVersion="False"
|
||||
android:label="RESTAppenderMobileSample"
|
||||
android:debuggable="True"
|
||||
android:largeHeap="False"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:theme="@style/AppTheme"
|
||||
android:hardwareAccelerated="true">
|
||||
|
||||
|
||||
|
||||
<!-- Our activity is a subclass of the built-in NativeActivity framework class.
|
||||
This will take care of integrating with our NDK code. -->
|
||||
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
|
||||
android:label="RESTAppenderMobileSample"
|
||||
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
|
||||
android:launchMode="singleTask">
|
||||
<!-- Tell NativeActivity the name of our .so -->
|
||||
<meta-data android:name="android.app.lib_name"
|
||||
android:value="RESTAppenderMobileSample" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />
|
||||
|
||||
</application>
|
||||
</manifest>
|
||||
<!-- END_INCLUDE(manifest) -->
|
@ -1,43 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- BEGIN_INCLUDE(manifest) -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="%package%"
|
||||
android:versionCode="%versionCode%"
|
||||
android:versionName="%versionName%"
|
||||
android:installLocation="%installLocation%">
|
||||
|
||||
<!-- This is the platform API where NativeActivity was introduced. -->
|
||||
<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
|
||||
<%uses-permission%>
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="True"/>
|
||||
<application android:persistent="%persistent%"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:restoreAnyVersion="%restoreAnyVersion%"
|
||||
android:label="%label%"
|
||||
android:debuggable="%debuggable%"
|
||||
android:largeHeap="%largeHeap%"
|
||||
android:icon="%icon%"
|
||||
android:theme="%theme%"
|
||||
android:hardwareAccelerated="%hardwareAccelerated%">
|
||||
|
||||
<%application-meta-data%>
|
||||
<%services%>
|
||||
<!-- Our activity is a subclass of the built-in NativeActivity framework class.
|
||||
This will take care of integrating with our NDK code. -->
|
||||
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
|
||||
android:label="%activityLabel%"
|
||||
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
|
||||
android:launchMode="singleTask">
|
||||
<!-- Tell NativeActivity the name of our .so -->
|
||||
<meta-data android:name="android.app.lib_name"
|
||||
android:value="%libNameValue%" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<%activity%>
|
||||
<%receivers%>
|
||||
</application>
|
||||
</manifest>
|
||||
<!-- END_INCLUDE(manifest) -->
|
@ -1,96 +0,0 @@
|
||||
object Form2: TForm2
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'Form2'
|
||||
ClientHeight = 569
|
||||
ClientWidth = 343
|
||||
Padding.Left = 10.000000000000000000
|
||||
Padding.Top = 10.000000000000000000
|
||||
Padding.Right = 10.000000000000000000
|
||||
Padding.Bottom = 10.000000000000000000
|
||||
FormFactor.Width = 320
|
||||
FormFactor.Height = 480
|
||||
FormFactor.Devices = [Desktop]
|
||||
OnCreate = FormCreate
|
||||
DesignerMasterStyle = 3
|
||||
object btnDEBUG: TButton
|
||||
Align = Top
|
||||
Margins.Left = 5.000000000000000000
|
||||
Margins.Top = 5.000000000000000000
|
||||
Margins.Right = 5.000000000000000000
|
||||
Margins.Bottom = 5.000000000000000000
|
||||
Position.X = 15.000000000000000000
|
||||
Position.Y = 54.000000000000000000
|
||||
Size.Width = 313.000000000000000000
|
||||
Size.Height = 57.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 0
|
||||
Text = 'Send DEBUG Message'
|
||||
OnClick = btnDEBUGClick
|
||||
Left = 8
|
||||
Top = 8
|
||||
end
|
||||
object btnWARNING: TButton
|
||||
Align = Top
|
||||
Margins.Left = 5.000000000000000000
|
||||
Margins.Top = 5.000000000000000000
|
||||
Margins.Right = 5.000000000000000000
|
||||
Margins.Bottom = 5.000000000000000000
|
||||
Position.X = 15.000000000000000000
|
||||
Position.Y = 188.000000000000000000
|
||||
Size.Width = 313.000000000000000000
|
||||
Size.Height = 57.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 1
|
||||
Text = 'Send WARNING Message'
|
||||
OnClick = btnWARNINGClick
|
||||
Left = 151
|
||||
Top = 8
|
||||
end
|
||||
object btnINFO: TButton
|
||||
Align = Top
|
||||
Margins.Left = 5.000000000000000000
|
||||
Margins.Top = 5.000000000000000000
|
||||
Margins.Right = 5.000000000000000000
|
||||
Margins.Bottom = 5.000000000000000000
|
||||
Position.X = 15.000000000000000000
|
||||
Position.Y = 121.000000000000000000
|
||||
Size.Width = 313.000000000000000000
|
||||
Size.Height = 57.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 2
|
||||
Text = 'Send INFO Message'
|
||||
OnClick = btnINFOClick
|
||||
Left = 294
|
||||
Top = 8
|
||||
end
|
||||
object btnERROR: TButton
|
||||
Align = Top
|
||||
Margins.Left = 5.000000000000000000
|
||||
Margins.Top = 5.000000000000000000
|
||||
Margins.Right = 5.000000000000000000
|
||||
Margins.Bottom = 5.000000000000000000
|
||||
Position.X = 15.000000000000000000
|
||||
Position.Y = 255.000000000000000000
|
||||
Size.Width = 313.000000000000000000
|
||||
Size.Height = 57.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 3
|
||||
Text = 'Send ERROR Message'
|
||||
OnClick = btnERRORClick
|
||||
Left = 437
|
||||
Top = 8
|
||||
end
|
||||
object Label1: TLabel
|
||||
Align = MostTop
|
||||
Position.X = 10.000000000000000000
|
||||
Position.Y = 10.000000000000000000
|
||||
Size.Width = 323.000000000000000000
|
||||
Size.Height = 39.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
StyleLookup = 'listboxheaderlabel'
|
||||
TextSettings.HorzAlign = Center
|
||||
Text = 'LoggerPro - REST Appender DEMO'
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user