mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 15:55:54 +01:00
Merge commit '4b3008e7c62ba577583508bd70b1d1bad0387222' as 'lib/loggerpro'
This commit is contained in:
commit
46e1d80852
73
lib/loggerpro/.gitignore
vendored
Normal file
73
lib/loggerpro/.gitignore
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# Uncomment these types if you want even more clean repository. But be careful.
|
||||||
|
# It can make harm to an existing project source. Read explanations below.
|
||||||
|
#
|
||||||
|
# Resource files are binaries containing manifest, project icon and version info.
|
||||||
|
# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
|
||||||
|
#*.res
|
||||||
|
#
|
||||||
|
# Type library file (binary). In old Delphi versions it should be stored.
|
||||||
|
# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
|
||||||
|
#*.tlb
|
||||||
|
#
|
||||||
|
# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
|
||||||
|
# Uncomment this if you are not using diagrams or use newer Delphi version.
|
||||||
|
#*.ddp
|
||||||
|
#
|
||||||
|
# Visual LiveBindings file. Added in Delphi XE2.
|
||||||
|
# Uncomment this if you are not using LiveBindings Designer.
|
||||||
|
#*.vlb
|
||||||
|
#
|
||||||
|
# Deployment Manager configuration file for your project. Added in Delphi XE2.
|
||||||
|
# Uncomment this if it is not mobile development and you do not use remote debug feature.
|
||||||
|
#*.deployproj
|
||||||
|
#
|
||||||
|
# C++ object files produced when C/C++ Output file generation is configured.
|
||||||
|
# Uncomment this if you are not using external objects (zlib library for example).
|
||||||
|
#*.obj
|
||||||
|
#
|
||||||
|
|
||||||
|
# Delphi compiler-generated binaries (safe to delete)
|
||||||
|
*.exe
|
||||||
|
*.dll
|
||||||
|
*.bpl
|
||||||
|
*.bpi
|
||||||
|
*.dcp
|
||||||
|
*.so
|
||||||
|
*.apk
|
||||||
|
*.drc
|
||||||
|
*.map
|
||||||
|
*.dres
|
||||||
|
*.rsm
|
||||||
|
*.tds
|
||||||
|
*.dcu
|
||||||
|
*.lib
|
||||||
|
*.a
|
||||||
|
*.o
|
||||||
|
*.ocx
|
||||||
|
|
||||||
|
# Delphi autogenerated files (duplicated info)
|
||||||
|
*.cfg
|
||||||
|
*.hpp
|
||||||
|
*Resource.rc
|
||||||
|
|
||||||
|
# Delphi local files (user-specific info)
|
||||||
|
*.local
|
||||||
|
*.identcache
|
||||||
|
*.projdata
|
||||||
|
*.tvsconfig
|
||||||
|
*.dsk
|
||||||
|
|
||||||
|
# Delphi history and backups
|
||||||
|
__history/
|
||||||
|
*.~*
|
||||||
|
|
||||||
|
# Castalia statistics file (since XE7 Castalia is distributed with Delphi)
|
||||||
|
*.stat
|
||||||
|
/samples/08_email_appender/bin/config.txt
|
||||||
|
*.res
|
||||||
|
samples/110_rest_appender_mobile/Android/
|
||||||
|
*.pyc
|
||||||
|
.doit.db.dir
|
||||||
|
.doit.db.dat
|
||||||
|
unittests/Win32/PLAINDUNITX/dunitx-results.xml
|
||||||
|
unittests/Win32/TESTINSIGHT/TestInsightSettings.ini
|
11
lib/loggerpro/Delphinus.Info.json
Normal file
11
lib/loggerpro/Delphinus.Info.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
25
lib/loggerpro/Delphinus.Install.json
Normal file
25
lib/loggerpro/Delphinus.Install.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}]
|
||||||
|
}
|
1
lib/loggerpro/LOGGERPRO-BUILD-TIMESTAMP.TXT
Normal file
1
lib/loggerpro/LOGGERPRO-BUILD-TIMESTAMP.TXT
Normal file
@ -0,0 +1 @@
|
|||||||
|
14/05/2020 19:08:39
|
53
lib/loggerpro/License.txt
Normal file
53
lib/loggerpro/License.txt
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||||
|
|
||||||
|
You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||||
|
|
||||||
|
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||||
|
|
||||||
|
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
||||||
|
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
150
lib/loggerpro/LoggerPro.ConsoleAppender.pas
Normal file
150
lib/loggerpro/LoggerPro.ConsoleAppender.pas
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProConsoleAppender))
|
||||||
|
@author(Daniele Teti)
|
||||||
|
@author(Fulgan - https://github.com/Fulgan) }
|
||||||
|
|
||||||
|
unit LoggerPro.ConsoleAppender;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes,
|
||||||
|
SysUtils,
|
||||||
|
LoggerPro,
|
||||||
|
SyncObjs;
|
||||||
|
|
||||||
|
type
|
||||||
|
/// <summary>TLoggerProConsoleAppender
|
||||||
|
/// This class creates a new console (if needed) when setup.
|
||||||
|
/// Warning: If the application is of type GUI and it is started from a console,
|
||||||
|
/// this will NOT log to the calling console but create a new one.
|
||||||
|
/// This is because the way cmd.exe works: if the application is of type GUI,
|
||||||
|
/// then is immediately detaches from cmd.exe which doesn't wait. This means that
|
||||||
|
/// there is never a console to attach to except if a new console is created
|
||||||
|
/// elsewhere in the app.
|
||||||
|
/// In case this class is used from a console, then there is no guarantee that
|
||||||
|
/// the messages will be
|
||||||
|
/// displayed in chronological order.
|
||||||
|
/// </summary>
|
||||||
|
TLoggerProConsoleAppender = class(TLoggerProAppenderBase)
|
||||||
|
strict private
|
||||||
|
class var FLock: TCriticalSection; // used to prevent syncroneous operations to run at the same time
|
||||||
|
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
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// for some reason, AttachConsole has been left out of Winapi.windows.pas
|
||||||
|
function AttachConsole(PID: Cardinal): LongBool; stdcall;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{ TLoggerProConsoleAppender }
|
||||||
|
|
||||||
|
uses
|
||||||
|
Winapi.Windows,
|
||||||
|
Winapi.Messages;
|
||||||
|
|
||||||
|
// for some reason, AttachConsole has been left out of Winapi.windows.pas
|
||||||
|
const
|
||||||
|
ATTACH_PARENT_PROCESS = Cardinal(-1);
|
||||||
|
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 }
|
||||||
|
FOREGROUND_RED = 4; { text color red }
|
||||||
|
FOREGROUND_INTENSITY = 8; { text color is intensified }
|
||||||
|
{ BACKGROUND COLORS - CAN BE COMBINED }
|
||||||
|
BACKGROUND_BLUE = $10; { background color blue }
|
||||||
|
BACKGROUND_GREEN = $20; { background color green }
|
||||||
|
BACKGROUND_RED = $40; { background color red. }
|
||||||
|
BACKGROUND_INTENSITY = $80; { background color is intensified }
|
||||||
|
|
||||||
|
procedure TLoggerProConsoleAppender.SetColor(const Color: Integer);
|
||||||
|
begin
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), Color);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProConsoleAppender.Setup;
|
||||||
|
begin
|
||||||
|
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||||
|
if TInterlocked.read(TLoggerProConsoleAppender.FConsoleAllocated) < 2 then
|
||||||
|
begin
|
||||||
|
TLoggerProConsoleAppender.FLock.Enter;
|
||||||
|
try
|
||||||
|
if TInterlocked.Increment(TLoggerProConsoleAppender.FConsoleAllocated) = 1 then
|
||||||
|
begin
|
||||||
|
// Attempt to attach to the parent (if there is already a console allocated)
|
||||||
|
if not IsConsole then
|
||||||
|
begin
|
||||||
|
if not AttachConsole(ATTACH_PARENT_PROCESS) then
|
||||||
|
AllocConsole; // No console allocated, create a new one
|
||||||
|
end;
|
||||||
|
TInterlocked.Increment(TLoggerProConsoleAppender.FConsoleAllocated);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
TLoggerProConsoleAppender.FLock.Leave;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProConsoleAppender.TearDown;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProConsoleAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lText: string;
|
||||||
|
lColor: Integer;
|
||||||
|
begin
|
||||||
|
lColor := FOREGROUND_GREEN; // Avoid W1030
|
||||||
|
case aLogItem.LogType of
|
||||||
|
TLogType.Debug:
|
||||||
|
lColor := FOREGROUND_GREEN;
|
||||||
|
TLogType.Info:
|
||||||
|
lColor := FOREGROUND_BLUE or FOREGROUND_GREEN or FOREGROUND_RED;
|
||||||
|
TLogType.Warning:
|
||||||
|
lColor := FOREGROUND_RED or FOREGROUND_GREEN or FOREGROUND_INTENSITY;
|
||||||
|
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]);
|
||||||
|
TLoggerProConsoleAppender.FLock.Enter;
|
||||||
|
try
|
||||||
|
SetColor(lColor);
|
||||||
|
Writeln(lText);
|
||||||
|
finally
|
||||||
|
TLoggerProConsoleAppender.FLock.Leave;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class constructor TLoggerProConsoleAppender.Create;
|
||||||
|
begin
|
||||||
|
TLoggerProConsoleAppender.FLock := TCriticalSection.Create;
|
||||||
|
TLoggerProConsoleAppender.FConsoleAllocated := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class destructor TLoggerProConsoleAppender.Destroy;
|
||||||
|
begin
|
||||||
|
// make sure all code
|
||||||
|
try
|
||||||
|
TLoggerProConsoleAppender.FLock.Enter;
|
||||||
|
FreeAndNil(TLoggerProConsoleAppender.FLock);
|
||||||
|
except
|
||||||
|
// No exception checking here or the app might blow up with a RTE 217
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
381
lib/loggerpro/LoggerPro.DMSEventStreamsAppender.pas
Normal file
381
lib/loggerpro/LoggerPro.DMSEventStreamsAppender.pas
Normal file
@ -0,0 +1,381 @@
|
|||||||
|
unit LoggerPro.DMSEventStreamsAppender;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.Classes,
|
||||||
|
MVCFramework.Commons, {this demo requires DMVCFramework}
|
||||||
|
System.SysUtils,
|
||||||
|
LoggerPro,
|
||||||
|
System.Net.HttpClient,
|
||||||
|
EventStreamsRPCProxy,
|
||||||
|
JsonDataObjects;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{
|
||||||
|
Log appender for a DMSContainer EventStreams endpoint
|
||||||
|
Author: Daniele Teti (https://github.com/danieleteti/)
|
||||||
|
}
|
||||||
|
|
||||||
|
TOnCreateJSONData = reference to procedure(const Sender: TObject; const LogItem: TLogItem;
|
||||||
|
const ExtendedInfo: TLoggerProExtendedInfo;
|
||||||
|
Data: TJSONObject);
|
||||||
|
TOnNetSendError = reference to procedure(const Sender: TObject; const LogItem: TLogItem; const NetError: Exception;
|
||||||
|
var RetryCount: Integer);
|
||||||
|
|
||||||
|
{
|
||||||
|
dmsatByTag:
|
||||||
|
all messages with the same tag go in the same queue
|
||||||
|
|
||||||
|
dmsatByType:
|
||||||
|
all messages with the same type go in the same queue
|
||||||
|
dmsatByTagThenType:
|
||||||
|
messages are organized in one queue for each tag,
|
||||||
|
then one queue for each type (es. myapp.mytag.error, myapp.mytag.warning etc)
|
||||||
|
|
||||||
|
dmsatByTypeThenTag:
|
||||||
|
messages are organized in one queue for each type,
|
||||||
|
then one queue for each tag (es. myapp.error.mytag, myapp.warning.mytag etc)
|
||||||
|
}
|
||||||
|
TDMSQueueAggregationType = (dmsatByTag, dmsatByType, dmsatByTagThenType, dmsatByTypeThenTag);
|
||||||
|
|
||||||
|
TLoggerProDMSContainerAppender = class(TLoggerProAppenderBase, ILogAppender)
|
||||||
|
strict private
|
||||||
|
fOnCreateJSONData: TOnCreateJSONData;
|
||||||
|
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);
|
||||||
|
private
|
||||||
|
fQueueNameBase: string;
|
||||||
|
fLogItemAggregationType: TDMSQueueAggregationType;
|
||||||
|
strict protected
|
||||||
|
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];
|
||||||
|
procedure InternalWriteLog(const aLogItem: TLogItem; const aJSONObject: TJSONObject);
|
||||||
|
public
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
constructor Create(aEventStreamsProxy: TEventStreamsRPCProxy;
|
||||||
|
aDMSContainerAPIKey: String;
|
||||||
|
aEventStreamsQueueNameBase: String = 'queues.logs.';
|
||||||
|
aLogItemAggregationType: TDMSQueueAggregationType = dmsatByTag;
|
||||||
|
aLogExtendedInfo: TLoggerProExtendedInfo = DEFAULT_EXTENDED_INFO;
|
||||||
|
aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||||
|
destructor Destroy; override;
|
||||||
|
property OnCreateJSONData: TOnCreateJSONData read fOnCreateJSONData write SetOnCreateJSONData;
|
||||||
|
property OnNetSendError: TOnNetSendError read fOnNetSendError write SetOnNetSendError;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure Setup; override;
|
||||||
|
function CreateData(const SrcLogItem: TLogItem): TJSONObject; virtual;
|
||||||
|
function GetDefaultLog(const aLogItem: TLogItem): TJSONObject; virtual;
|
||||||
|
class function GetModuleBaseName: String;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IF Defined(MSWINDOWS) }
|
||||||
|
Winapi.Windows,
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android) }
|
||||||
|
Androidapi.JNI.GraphicsContentViewText,
|
||||||
|
Androidapi.JNI.JavaTypes,
|
||||||
|
Androidapi.JNI.Os,
|
||||||
|
Androidapi.JNI.Util,
|
||||||
|
Androidapi.Helpers,
|
||||||
|
{$ENDIF}
|
||||||
|
System.NetEncoding,
|
||||||
|
System.IOUtils,
|
||||||
|
System.Net.URLClient;
|
||||||
|
|
||||||
|
{$IFDEF MSWINDOWS }
|
||||||
|
|
||||||
|
|
||||||
|
function GetUserFromWindows: string;
|
||||||
|
var
|
||||||
|
iLen: Cardinal;
|
||||||
|
begin
|
||||||
|
iLen := 256;
|
||||||
|
Result := StringOfChar(#0, iLen);
|
||||||
|
GetUserName(PChar(Result), iLen);
|
||||||
|
SetLength(Result, iLen - 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetComputerNameFromWindows: string;
|
||||||
|
var
|
||||||
|
iLen: Cardinal;
|
||||||
|
begin
|
||||||
|
iLen := MAX_COMPUTERNAME_LENGTH + 1;
|
||||||
|
Result := StringOfChar(#0, iLen);
|
||||||
|
GetComputerName(PChar(Result), iLen);
|
||||||
|
SetLength(Result, iLen);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
|
||||||
|
constructor TLoggerProDMSContainerAppender.Create(
|
||||||
|
aEventStreamsProxy: TEventStreamsRPCProxy;
|
||||||
|
aDMSContainerAPIKey: String;
|
||||||
|
aEventStreamsQueueNameBase: String;
|
||||||
|
aLogItemAggregationType: TDMSQueueAggregationType;
|
||||||
|
aLogExtendedInfo: TLoggerProExtendedInfo;
|
||||||
|
aLogFormat: string);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
fEventStreamsProxy := aEventStreamsProxy;
|
||||||
|
fQueueNameBase := aEventStreamsQueueNameBase;
|
||||||
|
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
|
||||||
|
if Assigned(fOnCreateJSONData) then
|
||||||
|
begin
|
||||||
|
fOnCreateJSONData(Self, SrcLogItem, fExtendedInfo, Result);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Result := GetDefaultLog(SrcLogItem);
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
begin
|
||||||
|
FreeAndNil(Result);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TLoggerProDMSContainerAppender.Destroy;
|
||||||
|
begin
|
||||||
|
fEventStreamsProxy.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProDMSContainerAppender.GetDefaultLog(const aLogItem: TLogItem): TJSONObject;
|
||||||
|
begin
|
||||||
|
Result := TJSONObject.Create;
|
||||||
|
try
|
||||||
|
Result.S['timestamp'] := datetimetostr(aLogItem.TimeStamp, fFormatSettings);
|
||||||
|
Result.L['tid'] := aLogItem.ThreadID;
|
||||||
|
Result.S['type'] := aLogItem.LogTypeAsString;
|
||||||
|
Result.S['text'] := aLogItem.LogMessage;
|
||||||
|
Result.O['info'] := GetExtendedInfo;
|
||||||
|
// Result.S['tag'] := aLogItem.LogTag;
|
||||||
|
except
|
||||||
|
Result.Free;
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProDMSContainerAppender.GetExtendedInfo: TJSONObject;
|
||||||
|
begin
|
||||||
|
Result := TJSONObject.Create;
|
||||||
|
try
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
if TLogExtendedInfo.EIUserName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result.S['username'] := fExtendedInfoData[TLogExtendedInfo.EIUserName];
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIComputerName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result.S['computername'] := fExtendedInfoData[TLogExtendedInfo.EIComputerName];
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result.S['processname'] := fExtendedInfoData[TLogExtendedInfo.EIProcessName];
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result.S['pid'] := fExtendedInfoData[TLogExtendedInfo.EIProcessID];
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result.S['processname'] := fExtendedInfoData[TLogExtendedInfo.EIProcessName];
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
except
|
||||||
|
Result.Free;
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TLoggerProDMSContainerAppender.GetModuleBaseName: String;
|
||||||
|
begin
|
||||||
|
{$IF DEFINED(MSWINDOWS)}
|
||||||
|
Result := TPath.ChangeExtension(TPath.GetFileName(GetModuleName(HInstance)), '');
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
Result := TAndroidHelper.ApplicationTitle;
|
||||||
|
{$ENDIF}
|
||||||
|
if Result.IsEmpty then
|
||||||
|
begin
|
||||||
|
raise ELoggerPro.Create('Current platform not supported by ' + ClassName);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.LoadExtendedInfo;
|
||||||
|
begin
|
||||||
|
{$IF DEFINED(MSWINDOWS)}
|
||||||
|
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessID] := IntToStr(GetCurrentProcessId);
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIUserName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIUserName] := GetUserFromWindows;
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIComputerName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIComputerName] := GetComputerNameFromWindows;
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessName] := TPath.GetFileName(GetModuleName(HInstance));
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessID] := IntToStr(GetCurrentProcessId);
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessName] := TAndroidHelper.ApplicationTitle;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.SetOnCreateJSONData(const Value: TOnCreateJSONData);
|
||||||
|
begin
|
||||||
|
fOnCreateJSONData := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.SetOnNetSendError(const Value: TOnNetSendError);
|
||||||
|
begin
|
||||||
|
fOnNetSendError := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.Setup;
|
||||||
|
begin
|
||||||
|
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.TearDown;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.InternalWriteLog(const aLogItem: TLogItem;
|
||||||
|
const aJSONObject: TJSONObject);
|
||||||
|
var
|
||||||
|
lRetryCount: Integer;
|
||||||
|
lResp: IHTTPResponse;
|
||||||
|
lJSONResp: TJSONObject;
|
||||||
|
const
|
||||||
|
MAX_RETRY_COUNT = 5;
|
||||||
|
begin
|
||||||
|
lRetryCount := 0;
|
||||||
|
repeat
|
||||||
|
try
|
||||||
|
lJSONResp := fEventStreamsProxy.EnqueueMessage(fDMSContainerAPIKey, fQueueNameBase + aLogItem.LogTag,
|
||||||
|
aJSONObject);
|
||||||
|
try
|
||||||
|
|
||||||
|
finally
|
||||||
|
lJSONResp.Free;
|
||||||
|
end;
|
||||||
|
Break;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
begin
|
||||||
|
// if there is an event handler for net exception, call it
|
||||||
|
if Assigned(fOnNetSendError) then
|
||||||
|
OnNetSendError(Self, aLogItem, E, lRetryCount);
|
||||||
|
Inc(lRetryCount);
|
||||||
|
// if the handler has set FRetryCount to a positive value then retry the call
|
||||||
|
if lRetryCount >= MAX_RETRY_COUNT then
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until False;
|
||||||
|
// finally
|
||||||
|
// FreeAndNil(lHTTPCli);
|
||||||
|
// end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProDMSContainerAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lData: TJSONObject;
|
||||||
|
lRetryCount: Integer;
|
||||||
|
lResp: IHTTPResponse;
|
||||||
|
lJSONResp: TJSONObject;
|
||||||
|
lQueueName: string;
|
||||||
|
const
|
||||||
|
MAX_RETRY_COUNT = 5;
|
||||||
|
begin
|
||||||
|
lRetryCount := 0;
|
||||||
|
repeat
|
||||||
|
try
|
||||||
|
case fLogItemAggregationType of
|
||||||
|
dmsatByTag:
|
||||||
|
lQueueName := fQueueNameBase + aLogItem.LogTag;
|
||||||
|
dmsatByType:
|
||||||
|
lQueueName := fQueueNameBase + aLogItem.LogTypeAsString;
|
||||||
|
dmsatByTagThenType:
|
||||||
|
lQueueName := fQueueNameBase + aLogItem.LogTag + '.' + aLogItem.LogTypeAsString;
|
||||||
|
dmsatByTypeThenTag:
|
||||||
|
lQueueName := fQueueNameBase + aLogItem.LogTypeAsString + '.' + aLogItem.LogTag;
|
||||||
|
else
|
||||||
|
raise ELoggerPro.Create('Invalid Aggregation type');
|
||||||
|
end;
|
||||||
|
lJSONResp := fEventStreamsProxy.EnqueueMessage(fDMSContainerAPIKey,
|
||||||
|
lQueueName,
|
||||||
|
CreateData(aLogItem));
|
||||||
|
try
|
||||||
|
|
||||||
|
finally
|
||||||
|
lJSONResp.Free;
|
||||||
|
end;
|
||||||
|
Break;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
begin
|
||||||
|
// if there is an event handler for net exception, call it
|
||||||
|
if Assigned(fOnNetSendError) then
|
||||||
|
OnNetSendError(Self, aLogItem, E, lRetryCount);
|
||||||
|
Inc(lRetryCount);
|
||||||
|
// if the handler has set FRetryCount to a positive value then retry the call
|
||||||
|
if lRetryCount >= MAX_RETRY_COUNT then
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
118
lib/loggerpro/LoggerPro.EMailAppender.pas
Normal file
118
lib/loggerpro/LoggerPro.EMailAppender.pas
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
unit LoggerPro.EMailAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProRedisAppender))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro, System.Classes, System.DateUtils,
|
||||||
|
idSMTP;
|
||||||
|
|
||||||
|
type
|
||||||
|
{
|
||||||
|
@abstract(Logs sending message to an email address)
|
||||||
|
To learn how to use this appender, check the sample @code(email_appender.dproj)
|
||||||
|
@author(Daniele Teti - d.teti@bittime.it)
|
||||||
|
}
|
||||||
|
TLoggerProEMailAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
FSMTP: TIdSMTP;
|
||||||
|
FFromAddresses: string;
|
||||||
|
FToAddresses: string;
|
||||||
|
protected
|
||||||
|
/// <summary>
|
||||||
|
/// Ovveride this method in descendant if you want a different formatting for
|
||||||
|
/// message subject or body
|
||||||
|
/// </summary>
|
||||||
|
procedure PrepareMessage(const aLogItem: TLogItem; out aSubject, aBody: String); virtual;
|
||||||
|
public
|
||||||
|
constructor Create(aSMTP: TIdSMTP; const aFromAddresses, aToAddresses: String); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
procedure TryToRestart(var Restarted: Boolean); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
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);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FSMTP := aSMTP;
|
||||||
|
FFromAddresses := aFromAddresses;
|
||||||
|
FToAddresses := aToAddresses;
|
||||||
|
{ by default, email appender sends only errors }
|
||||||
|
SetLogLevel(TLogType.Error);
|
||||||
|
end;
|
||||||
|
|
||||||
|
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]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProEMailAppender.Setup;
|
||||||
|
begin
|
||||||
|
//
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProEMailAppender.TearDown;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
FSMTP.Free;
|
||||||
|
except
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProEMailAppender.TryToRestart(var Restarted: Boolean);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
try
|
||||||
|
FSMTP.Disconnect(false);
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
Restarted := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SendEmail(aSMTP: TIdSMTP; const aFromAddresses, aToAddresses: String; const Subject, Body: String);
|
||||||
|
var
|
||||||
|
Msg: TIdMessage;
|
||||||
|
begin
|
||||||
|
Msg := TIdMessage.Create(nil);
|
||||||
|
try
|
||||||
|
Msg.From.Text := aFromAddresses;
|
||||||
|
Msg.Recipients.EMailAddresses := aToAddresses;
|
||||||
|
Msg.Body.Text := Body;
|
||||||
|
Msg.Subject := Subject;
|
||||||
|
if not aSMTP.Connected then
|
||||||
|
aSMTP.Connect;
|
||||||
|
aSMTP.Send(Msg);
|
||||||
|
try
|
||||||
|
aSMTP.Disconnect(false);
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Msg.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProEMailAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lBody: string;
|
||||||
|
lSubject: string;
|
||||||
|
begin
|
||||||
|
PrepareMessage(aLogItem, lSubject, lBody);
|
||||||
|
SendEmail(FSMTP, FFromAddresses, FToAddresses, lSubject, lBody);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
91
lib/loggerpro/LoggerPro.ElasticSearchAppender.pas
Normal file
91
lib/loggerpro/LoggerPro.ElasticSearchAppender.pas
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
unit LoggerPro.ElasticSearchAppender;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro,
|
||||||
|
System.SysUtils,
|
||||||
|
LoggerPro.RESTAppender;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{
|
||||||
|
Log appender for an ElasticSearch 6.4+ endpoint
|
||||||
|
Author: Daniele Teti (https://github.com/danieleteti/) and Salvatore Sparacino
|
||||||
|
}
|
||||||
|
|
||||||
|
TLoggerProElasticSearchAppender = class(TLoggerProRESTAppender)
|
||||||
|
public
|
||||||
|
constructor Create(aElasticHost: string; aElasticPort: integer;
|
||||||
|
aElasticIndex: string); reintroduce;
|
||||||
|
destructor Destroy; override;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure TryToRestart(var Restarted: Boolean); override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.Json,
|
||||||
|
System.DateUtils,
|
||||||
|
System.Classes;
|
||||||
|
|
||||||
|
{ TLoggerProElasticSearchAppender }
|
||||||
|
|
||||||
|
constructor TLoggerProElasticSearchAppender.Create(aElasticHost: string;
|
||||||
|
aElasticPort: integer; aElasticIndex: string);
|
||||||
|
var
|
||||||
|
lUrl: string;
|
||||||
|
begin
|
||||||
|
lUrl := Format('%s:%d/%s/_doc', [aElasticHost, aElasticPort, aElasticIndex.ToLower]);
|
||||||
|
inherited Create(lUrl, 'application/json');
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TLoggerProElasticSearchAppender.Destroy;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProElasticSearchAppender.Setup;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProElasticSearchAppender.TearDown;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProElasticSearchAppender.TryToRestart(var Restarted: Boolean);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
Restarted := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProElasticSearchAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lRequestBody: TStringStream;
|
||||||
|
lJSON: TJSONObject;
|
||||||
|
begin
|
||||||
|
lJSON := TJSONObject.Create;
|
||||||
|
try
|
||||||
|
lJSON.AddPair('log_tag', TJSONString.Create(aLogItem.LogTag));
|
||||||
|
lJSON.AddPair('log_level', TJSONString.Create(aLogItem.LogTypeAsString));
|
||||||
|
lJSON.AddPair('log_message', TJSONString.Create(aLogItem.LogMessage));
|
||||||
|
lJSON.AddPair('log_datetime', TJSONString.Create(DateToISO8601(aLogItem.TimeStamp)));
|
||||||
|
lJSON.AddPair('timestamp', TJSONString.Create(DateToISO8601(aLogItem.TimeStamp)));
|
||||||
|
|
||||||
|
lRequestBody := TStringStream.Create(lJSON.ToString);
|
||||||
|
try
|
||||||
|
InternalWriteLog(GetRESTUrl, aLogItem, lRequestBody);
|
||||||
|
finally
|
||||||
|
lRequestBody.Free
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lJSON.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
333
lib/loggerpro/LoggerPro.FileAppender.pas
Normal file
333
lib/loggerpro/LoggerPro.FileAppender.pas
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
unit LoggerPro.FileAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProFileAppender))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
{$IF Defined(Android) or Defined(iOS)}
|
||||||
|
{$DEFINE MOBILE}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro,
|
||||||
|
System.Generics.Collections,
|
||||||
|
System.SysUtils,
|
||||||
|
System.Classes;
|
||||||
|
|
||||||
|
type
|
||||||
|
{
|
||||||
|
@abstract(Logs to file using one different file for each different TAG used.)
|
||||||
|
@author(Daniele Teti - d.teti@bittime.it)
|
||||||
|
Implements log rotations.
|
||||||
|
This appender is the default appender when no configuration is done on the @link(TLogger) class.
|
||||||
|
|
||||||
|
Without any configuration LoggerPro uses the @link(TLoggerProFileAppender) with the default configuration.
|
||||||
|
|
||||||
|
So the following two blocks of code are equivalent:
|
||||||
|
|
||||||
|
@longcode(#
|
||||||
|
...
|
||||||
|
TLogger.Initialize; //=> uses the TLoggerProFileAppender because no other configuration is provided
|
||||||
|
...
|
||||||
|
|
||||||
|
...
|
||||||
|
TLogger.AddAppender(TLoggerProFileAppender.Create);
|
||||||
|
TLogger.Initialize //=> uses the TLoggerProFileAppender as configured
|
||||||
|
...
|
||||||
|
#)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
TLoggerProFileAppender = 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;
|
||||||
|
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:
|
||||||
|
@orderedList(
|
||||||
|
@item SetNumber 0
|
||||||
|
@item ModuleName
|
||||||
|
@item LogNum
|
||||||
|
@item LogTag
|
||||||
|
)
|
||||||
|
}
|
||||||
|
DEFAULT_FILENAME_FORMAT = '%s.%2.2d.%s.log';
|
||||||
|
{ @abstract(Defines number of log file set to mantain 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?. }
|
||||||
|
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;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); overload; override;
|
||||||
|
property OnLogRow: TFileAppenderLogRow read fOnLogRow write fOnLogRow;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.IOUtils,
|
||||||
|
idGlobal
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
,Androidapi.Helpers
|
||||||
|
,Androidapi.JNI.GraphicsContentViewText
|
||||||
|
,Androidapi.JNI.JavaTypes
|
||||||
|
{$ENDIF}
|
||||||
|
;
|
||||||
|
|
||||||
|
{ TLoggerProFileAppender }
|
||||||
|
|
||||||
|
function TLoggerProFileAppender.GetLogFileName(const aTag: string; const aFileNumber: Integer): string;
|
||||||
|
var
|
||||||
|
lExt: string;
|
||||||
|
lModuleName: string;
|
||||||
|
lPath: string;
|
||||||
|
lFormat: string;
|
||||||
|
begin
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
lModuleName := TAndroidHelper.ApplicationTitle.Replace(' ', '_', [rfReplaceAll]);
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF not Defined(Mobile)}
|
||||||
|
lModuleName := TPath.GetFileNameWithoutExtension(GetModuleName(HInstance));
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(IOS)}
|
||||||
|
raise Exception.Create('Platform not supported');
|
||||||
|
{$ENDIF}
|
||||||
|
lFormat := fLogFileNameFormat;
|
||||||
|
|
||||||
|
if TFileAppenderOption.IncludePID in fFileAppenderOptions then
|
||||||
|
lModuleName := lModuleName + '_pid_' + IntToStr(CurrentProcessId).PadLeft(6, '0');
|
||||||
|
|
||||||
|
lPath := fLogsFolder;
|
||||||
|
lExt := Format(lFormat, [lModuleName, aFileNumber, aTag]);
|
||||||
|
Result := TPath.Combine(lPath, lExt);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProFileAppender.Setup;
|
||||||
|
begin
|
||||||
|
if fLogsFolder = '' then
|
||||||
|
begin
|
||||||
|
{$IF (Defined(MSWINDOWS) or Defined(POSIX)) and (not Defined(MOBILE))}
|
||||||
|
fLogsFolder := TPath.GetDirectoryName(GetModuleName(HInstance));
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android) or Defined(IOS)}
|
||||||
|
fLogsFolder := TPath.GetSharedDocumentsPath();
|
||||||
|
{$ENDIF}
|
||||||
|
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);
|
||||||
|
begin
|
||||||
|
aStreamWriter.WriteLine(aValue);
|
||||||
|
aStreamWriter.Flush;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProFileAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lWriter: TStreamWriter;
|
||||||
|
lLogFileName: string;
|
||||||
|
lLogRow: string;
|
||||||
|
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;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProFileAppender.RetryMove(const aFileSrc, aFileDest: string);
|
||||||
|
var
|
||||||
|
lRetries: Integer;
|
||||||
|
const
|
||||||
|
MAX_RETRIES = 5;
|
||||||
|
begin
|
||||||
|
lRetries := 0;
|
||||||
|
repeat
|
||||||
|
try
|
||||||
|
Sleep(50);
|
||||||
|
// the incidence of "Locked file goes to nearly zero..."
|
||||||
|
TFile.Move(aFileSrc, aFileDest);
|
||||||
|
Break;
|
||||||
|
except
|
||||||
|
on E: EInOutError do
|
||||||
|
begin
|
||||||
|
Inc(lRetries);
|
||||||
|
Sleep(50);
|
||||||
|
end;
|
||||||
|
on E: Exception do
|
||||||
|
begin
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until lRetries = MAX_RETRIES;
|
||||||
|
|
||||||
|
if lRetries = MAX_RETRIES then
|
||||||
|
raise ELoggerPro.CreateFmt('Cannot rename %s to %s', [aFileSrc, aFileDest]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProFileAppender.RotateLog(const aLogItem: TLogItem; lWriter: TStreamWriter);
|
||||||
|
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);
|
||||||
|
// remove the last file of backup set
|
||||||
|
lRenamedFile := GetLogFileName(aLogItem.LogTag, 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);
|
||||||
|
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) + ']');
|
||||||
|
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;
|
||||||
|
aFileAppenderOptions: TFileAppenderOptions; aLogFileNameFormat: string; aLogFormat: string; aEncoding: TEncoding);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
fLogsFolder := aLogsFolder;
|
||||||
|
fMaxBackupFileCount := aMaxBackupFileCount;
|
||||||
|
fMaxFileSizeInKiloByte := aMaxFileSizeInKiloByte;
|
||||||
|
fLogFormat := aLogFormat;
|
||||||
|
fLogFileNameFormat := aLogFileNameFormat;
|
||||||
|
fFileAppenderOptions := aFileAppenderOptions;
|
||||||
|
if Assigned(aEncoding) then
|
||||||
|
fEncoding := aEncoding
|
||||||
|
else
|
||||||
|
fEncoding := TEncoding.DEFAULT;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProFileAppender.CreateWriter(const aFileName: string): TStreamWriter;
|
||||||
|
var
|
||||||
|
lFileStream: TFileStream;
|
||||||
|
lFileAccessMode: Word;
|
||||||
|
lRetries: Integer;
|
||||||
|
begin
|
||||||
|
lFileAccessMode := fmOpenWrite or fmShareDenyNone;
|
||||||
|
if not TFile.Exists(aFileName) then
|
||||||
|
lFileAccessMode := lFileAccessMode or fmCreate;
|
||||||
|
|
||||||
|
// If the file si still blocked by a precedent execution or
|
||||||
|
// for some other reasons, we try to access the file for 5 times.
|
||||||
|
// If after 5 times (with a bit of delay in between) the file is still
|
||||||
|
// locked, then the exception is raised.
|
||||||
|
lRetries := 0;
|
||||||
|
while true do
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
lFileStream := TFileStream.Create(aFileName, lFileAccessMode);
|
||||||
|
try
|
||||||
|
lFileStream.Seek(0, TSeekOrigin.soEnd);
|
||||||
|
Result := TStreamWriter.Create(lFileStream, fEncoding, 32);
|
||||||
|
Result.AutoFlush := true;
|
||||||
|
Result.OwnStream;
|
||||||
|
Break;
|
||||||
|
except
|
||||||
|
lFileStream.Free;
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
if lRetries = RETRY_COUNT then
|
||||||
|
begin
|
||||||
|
raise;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Inc(lRetries);
|
||||||
|
Sleep(RETRY_DELAY); // just wait a little bit
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
77
lib/loggerpro/LoggerPro.GlobalLogger.pas
Normal file
77
lib/loggerpro/LoggerPro.GlobalLogger.pas
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
unit LoggerPro.GlobalLogger;
|
||||||
|
{<@abstract(Contains the global logger as a thread safe singleton)
|
||||||
|
Use the global logger for fast&dirty logging, but consider to use your own
|
||||||
|
instance of @link(ILogWriter) (created using @link(BuildLogWriter)) for all your serious logging needs.
|
||||||
|
@author(Daniele Teti - d.teti@bittime.it)
|
||||||
|
}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro;
|
||||||
|
{ @abstract(The global logger. Just uses @link(Logger.GlobalLogger) and you can start to log using @code(Log) function.)
|
||||||
|
The global logger is configured with a @link(TLoggerProFileAppender) using default settings.
|
||||||
|
}
|
||||||
|
function Log: ILogWriter;
|
||||||
|
|
||||||
|
{ @abstract(Use only inside DLL because dll unloading is not a safe place to shutdown threads, so call this before unload DLL)
|
||||||
|
Use this also in ISAPI dll. Check the @code(loggerproisapisample.dll) sample
|
||||||
|
}
|
||||||
|
procedure ReleaseGlobalLogger;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro.FileAppender;
|
||||||
|
|
||||||
|
var
|
||||||
|
_Logger: ILogWriter;
|
||||||
|
_Lock: TObject = nil;
|
||||||
|
_ShuttedDown: boolean = false;
|
||||||
|
|
||||||
|
function Log: ILogWriter;
|
||||||
|
begin
|
||||||
|
if _Logger = nil then
|
||||||
|
begin
|
||||||
|
if not _ShuttedDown then
|
||||||
|
begin
|
||||||
|
TMonitor.Enter(_Lock);
|
||||||
|
try
|
||||||
|
if _Logger = nil then // double check
|
||||||
|
begin
|
||||||
|
_Logger := BuildLogWriter([TLoggerProFileAppender.Create]);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
TMonitor.Exit(_Lock);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result := _Logger;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReleaseGlobalLogger;
|
||||||
|
begin
|
||||||
|
if _Logger <> nil then
|
||||||
|
begin
|
||||||
|
TMonitor.Enter(_Lock);
|
||||||
|
try
|
||||||
|
if _Logger <> nil then // double check
|
||||||
|
begin
|
||||||
|
_Logger := nil;
|
||||||
|
_ShuttedDown := True;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
TMonitor.Exit(_Lock);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
|
||||||
|
_Lock := TObject.Create;
|
||||||
|
|
||||||
|
finalization
|
||||||
|
|
||||||
|
_Lock.Free;
|
||||||
|
|
||||||
|
end.
|
103
lib/loggerpro/LoggerPro.MemoryAppender.pas
Normal file
103
lib/loggerpro/LoggerPro.MemoryAppender.pas
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
// ***************************************************************************
|
||||||
|
//
|
||||||
|
// LoggerPro
|
||||||
|
//
|
||||||
|
// Copyright (c) 2015-2017 Daniele Teti
|
||||||
|
//
|
||||||
|
// https://github.com/danieleteti/loggerpro
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// ***************************************************************************
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// ***************************************************************************
|
||||||
|
|
||||||
|
unit LoggerPro.MemoryAppender;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro, System.Generics.Collections, System.SyncObjs, System.SysUtils,
|
||||||
|
ThreadSafeQueueU;
|
||||||
|
|
||||||
|
type
|
||||||
|
TMREWLogItemList = class(TMREWObjectList<TLogItem>)
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLoggerProMemoryAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
fMREWLogList: TMREWLogItemList;
|
||||||
|
fTag: string;
|
||||||
|
fMaxSize: Int32;
|
||||||
|
public
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
constructor Create(aLogList: TMREWLogItemList; aTag: string; aMaxSize: Int32); reintroduce; virtual;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
var
|
||||||
|
Glock: TObject = nil;
|
||||||
|
|
||||||
|
{ TLoggerProMemoryAppender }
|
||||||
|
|
||||||
|
constructor TLoggerProMemoryAppender.Create(aLogList: TMREWLogItemList; aTag: string; aMaxSize: Int32);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
fMREWLogList := aLogList;
|
||||||
|
fTag := aTag;
|
||||||
|
fMaxSize := aMaxSize
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProMemoryAppender.Setup;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProMemoryAppender.TearDown;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProMemoryAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lList: TObjectList<TLogItem>;
|
||||||
|
begin
|
||||||
|
if aLogItem.LogTag <> fTag then
|
||||||
|
Exit;
|
||||||
|
|
||||||
|
lList := fMREWLogList.BeginWrite;
|
||||||
|
try
|
||||||
|
if lList.Count >= fMaxSize then
|
||||||
|
begin
|
||||||
|
while lList.Count > (fMaxSize * 0.9) do // remove 10% of the list HEAD
|
||||||
|
lList.Delete(0);
|
||||||
|
end;
|
||||||
|
lList.Add(aLogItem.Clone);
|
||||||
|
finally
|
||||||
|
fMREWLogList.EndWrite;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
|
||||||
|
Glock := TObject.Create;
|
||||||
|
|
||||||
|
finalization
|
||||||
|
|
||||||
|
Glock.Free;
|
||||||
|
|
||||||
|
end.
|
244
lib/loggerpro/LoggerPro.NSQAppender.pas
Normal file
244
lib/loggerpro/LoggerPro.NSQAppender.pas
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
unit LoggerPro.NSQAppender;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses Classes, SysUtils, LoggerPro, System.Net.HttpClient;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{
|
||||||
|
Author: Stéphane "Fulgan" GROBETY (https://github.com/Fulgan/)
|
||||||
|
Log appender for NSQ (https://nsq.io) (https://github.com/nsqio/nsq)
|
||||||
|
"NSQ is a realtime message processing system designed to operate at bitly's
|
||||||
|
scale, handling billions of messages per day. It promotes distributed and
|
||||||
|
decentralized topologies without single points of failure, enabling fault
|
||||||
|
tolerance and high availability coupled with a reliable message delivery
|
||||||
|
guarantee"
|
||||||
|
|
||||||
|
For testing, you can navigate to the NSQ folder and type the following commands:
|
||||||
|
|
||||||
|
This starts the NSQLookup service then starts a listener on the default
|
||||||
|
endpoint(http:/127.0.0.1:4151)
|
||||||
|
|
||||||
|
start nsqlookupd
|
||||||
|
start nsqd --lookupd-tcp-address=127.0.0.1:4160
|
||||||
|
|
||||||
|
|
||||||
|
This starts a consumer for the topic "test" that outputs the messages to the console:
|
||||||
|
|
||||||
|
start nsq_tail --topic=test --lookupd-http-address=127.0.0.1:4161
|
||||||
|
|
||||||
|
(optional) This starts a consumer for the ephemeral topic "test" that outputs the messages to the console:
|
||||||
|
|
||||||
|
start nsq_tail --topic=test#ephemeral --lookupd-http-address=127.0.0.1:4161
|
||||||
|
|
||||||
|
(optional) This starts a NSQAdmin web interface that can be reached on http://localhost:4171/
|
||||||
|
|
||||||
|
start nsqadmin --lookupd-http-address=127.0.0.1:4161
|
||||||
|
|
||||||
|
Note about consumers:
|
||||||
|
- If there is no consumer to received messages for a channel, NSQ will
|
||||||
|
save them to memory and disk unless the topic has been marked as Ephemeral.
|
||||||
|
Use NSQAdmin to delete any extra channel created.
|
||||||
|
- Ephemeral topics are not saved or cached and the topic will be deleted
|
||||||
|
once the last consumer disconnects
|
||||||
|
- Writing a consumer is more complex than writing a client. A list of available
|
||||||
|
client libraries can be found at https://nsq.io/clients/client_libraries.html
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TOnCreateData = procedure(const sender : TObject; const LogItem: TLogItem; var Data: TStream);
|
||||||
|
TOnNetSendError = procedure(const sender : TObject; const LogItem: TLogItem; const NetError: ENetHTTPClientException; var RetryCount: Integer);
|
||||||
|
TLoggerProNSQAppenderBase = class(TLoggerProAppenderBase, ILogAppender)
|
||||||
|
private
|
||||||
|
FOnCreateData: TOnCreateData;
|
||||||
|
FOnNetSendError: TOnNetSendError;
|
||||||
|
procedure SetOnCreateData(const Value: TOnCreateData);
|
||||||
|
procedure SetOnNetSendError(const Value: TOnNetSendError);
|
||||||
|
protected
|
||||||
|
FNSQUrl : string;
|
||||||
|
FTopic: String;
|
||||||
|
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;
|
||||||
|
procedure SetNSQUrl(const Value: string);
|
||||||
|
function GetTopic: string;
|
||||||
|
procedure SetTopic(const Value: string);
|
||||||
|
procedure SetEphemeral(const Value: Boolean);
|
||||||
|
/// <summary>TLoggerProNSQAppenderBase.Create
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="aTopic"> (string) This is the "topic" of the channel. If left
|
||||||
|
/// empty, the LogItem's tag will be used. </param>
|
||||||
|
/// <param name="aEphemeral"> (Boolean) If true, the NSQ channel will be marked as
|
||||||
|
/// Ephemeral: messages sent to this channel will neither be cached nor
|
||||||
|
/// queued</param>
|
||||||
|
/// <param name="aNSQUrl"> (string) URL of the NSQD service (usually, http://127.0.
|
||||||
|
/// 0.1:4151)</param>
|
||||||
|
/// <param name="aLogFormat"> (string) Log format to use if no custom log message
|
||||||
|
/// creation event is defined </param>
|
||||||
|
constructor Create(aTopic: string=''; aEphemeral: Boolean = False;
|
||||||
|
aNSQUrl: string=DEFAULT_NSQ_URL;
|
||||||
|
aLogFormat: string=DEFAULT_LOG_FORMAT);
|
||||||
|
reintroduce;
|
||||||
|
property NSQUrl: string read GetNSQUrl write SetNSQUrl;
|
||||||
|
property Ephemeral: Boolean read FEphemeral write SetEphemeral;
|
||||||
|
property OnCreateData: TOnCreateData read FOnCreateData write SetOnCreateData;
|
||||||
|
property OnNetSendError: TOnNetSendError read FOnNetSendError write SetOnNetSendError;
|
||||||
|
property Topic: string read GetTopic write SetTopic;
|
||||||
|
procedure TearDown; override;
|
||||||
|
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);
|
||||||
|
begin
|
||||||
|
inherited Create();
|
||||||
|
FEphemeral := aEphemeral;
|
||||||
|
FNSQUrl := 'http://127.0.0.1:4151';
|
||||||
|
FUserName := aNSQUrl;
|
||||||
|
FLogFormat := aLogFormat;
|
||||||
|
FTopic := aTopic;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProNSQAppenderBase.CreateData(
|
||||||
|
const SrcLogItem: TLogItem): TStream;
|
||||||
|
begin
|
||||||
|
result := nil;
|
||||||
|
try
|
||||||
|
if assigned(FOnCreateData) then
|
||||||
|
begin
|
||||||
|
FOnCreateData(Self, SrcLogItem, Result);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
result := TStringStream.Create(FormatLog(SrcLogItem), TEncoding.UTF8);
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on e: Exception do
|
||||||
|
begin
|
||||||
|
FreeAndNil(Result);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
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;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProNSQAppenderBase.GetTopic: string;
|
||||||
|
begin
|
||||||
|
result := FTopic;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.SetEphemeral(const Value: Boolean);
|
||||||
|
begin
|
||||||
|
FEphemeral := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.SetNSQUrl(const Value: string);
|
||||||
|
begin
|
||||||
|
FNSQUrl := value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.SetOnCreateData(const Value: TOnCreateData);
|
||||||
|
begin
|
||||||
|
FOnCreateData := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.SetOnNetSendError(
|
||||||
|
const Value: TOnNetSendError);
|
||||||
|
begin
|
||||||
|
FOnNetSendError := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.SetTopic(const Value: string);
|
||||||
|
begin
|
||||||
|
FTopic := value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.Setup;
|
||||||
|
begin
|
||||||
|
FFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.TearDown;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProNSQAppenderBase.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
FHTTPCli: THTTPClient;
|
||||||
|
URI: string;
|
||||||
|
Data: TStream;
|
||||||
|
TopicName: string;
|
||||||
|
FRetryCount: Integer;
|
||||||
|
begin
|
||||||
|
FRetryCount := 0;
|
||||||
|
FHTTPCli := THTTPClient.Create;
|
||||||
|
try
|
||||||
|
if Topic.trim.IsEmpty then
|
||||||
|
TopicName := aLogItem.LogTag.Trim
|
||||||
|
else
|
||||||
|
TopicName := Topic.Trim;
|
||||||
|
URI :=NSQUrl + '/pub?topic=' + TNetEncoding.URL.Encode(TopicName);
|
||||||
|
if Ephemeral then
|
||||||
|
URI := URI + '#ephemeral';
|
||||||
|
Data := CreateData(aLogItem);
|
||||||
|
if Assigned(Data) then
|
||||||
|
begin
|
||||||
|
repeat
|
||||||
|
try
|
||||||
|
// Set very short timeouts: this is a local call and we don't want to block the queue for too long.
|
||||||
|
{$IF CompilerVersion >= 31}
|
||||||
|
FHTTPCli.ConnectionTimeout := 100;
|
||||||
|
FHTTPCli.ResponseTimeout := 200;
|
||||||
|
{$ENDIF}
|
||||||
|
Data.Seek(0, soFromBeginning);
|
||||||
|
// ignore the respnse: as long as NSQD has accepted the POST, it will handle the result
|
||||||
|
FHTTPCli.Post(URI, Data);
|
||||||
|
break;
|
||||||
|
except
|
||||||
|
on e: ENetHTTPClientException do
|
||||||
|
begin
|
||||||
|
// if there is an event handler for net exception, call it
|
||||||
|
if Assigned(FOnNetSendError) then
|
||||||
|
OnNetSendError(self, aLogItem, e, FRetryCount);
|
||||||
|
// if the handler has set FRetryCount to a positive value then retry the call
|
||||||
|
if FRetryCount <= 0 then
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until false;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(FHTTPCli);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
73
lib/loggerpro/LoggerPro.OutputDebugStringAppender.pas
Normal file
73
lib/loggerpro/LoggerPro.OutputDebugStringAppender.pas
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
unit LoggerPro.OutputDebugStringAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProOutputDebugStringAppender))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro, System.Classes;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ @abstract(This appenders sends logs to the @code(OutputDebugString) function on Windows OSes)
|
||||||
|
To learn how to use this appender, check the sample @code(outputdebugstring_appender.dproj)
|
||||||
|
}
|
||||||
|
TLoggerProOutputDebugStringAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
FModuleName: string;
|
||||||
|
{$ENDIF}
|
||||||
|
public
|
||||||
|
constructor Create; override;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils,
|
||||||
|
System.IOUtils
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
, Winapi.Windows
|
||||||
|
, Winapi.Messages
|
||||||
|
{$ENDIF}
|
||||||
|
;
|
||||||
|
|
||||||
|
{ TStringsLogAppender }
|
||||||
|
const
|
||||||
|
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||||
|
|
||||||
|
constructor TLoggerProOutputDebugStringAppender.Create;
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProOutputDebugStringAppender.Setup;
|
||||||
|
begin
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
FModuleName := TPath.GetFileName(GetModuleName(HInstance));
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProOutputDebugStringAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
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]);
|
||||||
|
OutputDebugString(PChar(lLog));
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
74
lib/loggerpro/LoggerPro.Proxy.pas
Normal file
74
lib/loggerpro/LoggerPro.Proxy.pas
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
unit LoggerPro.Proxy;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses Classes, System.SysUtils, LoggerPro;
|
||||||
|
|
||||||
|
type
|
||||||
|
ILogAppenderProxy=interface
|
||||||
|
['{34816F83-9FBF-461E-8913-F10F9460D712}']
|
||||||
|
function GetInternalAppender: ILogAppender;
|
||||||
|
property InternalAppender: ILogAppender read GetInternalAppender;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLoggerProFilter = class abstract
|
||||||
|
class function Build(Appender: ILogAppender; Filter: TFunc<TLogItem, boolean>): ILogAppender;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
type
|
||||||
|
TLoggerProAppenderFilterImpl = class(TLoggerProAppenderBase, ILogAppender, ILogAppenderProxy)
|
||||||
|
private
|
||||||
|
FAppender: ILogAppender;
|
||||||
|
FFilter: TFunc<TLogItem, boolean>;
|
||||||
|
function GetInternalAppender: ILogAppender;
|
||||||
|
public
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
property InternalAppender: ILogAppender read GetInternalAppender;
|
||||||
|
constructor Create(Appender: ILogAppender; Filter: TFunc<TLogItem, boolean>); reintroduce;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLoggerProAppenderFilterImpl }
|
||||||
|
|
||||||
|
constructor TLoggerProAppenderFilterImpl.Create(Appender: ILogAppender;
|
||||||
|
Filter: TFunc<TLogItem, boolean>);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
self.FFilter := Filter;
|
||||||
|
self.FAppender := Appender;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProAppenderFilterImpl.GetInternalAppender: ILogAppender;
|
||||||
|
begin
|
||||||
|
result := FAppender;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProAppenderFilterImpl.Setup;
|
||||||
|
begin
|
||||||
|
FAppender.Setup;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProAppenderFilterImpl.TearDown;
|
||||||
|
begin
|
||||||
|
FAppender.TearDown;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProAppenderFilterImpl.WriteLog(const aLogItem: TLogItem);
|
||||||
|
begin
|
||||||
|
if FFilter(aLogItem) then
|
||||||
|
FAppender.WriteLog(aLogItem);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
class function TLoggerProFilter.Build(Appender: ILogAppender;
|
||||||
|
Filter: TFunc<TLogItem, boolean>): ILogAppender;
|
||||||
|
begin
|
||||||
|
result := TLoggerProAppenderFilterImpl.Create(Appender, Filter);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
303
lib/loggerpro/LoggerPro.RESTAppender.pas
Normal file
303
lib/loggerpro/LoggerPro.RESTAppender.pas
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
unit LoggerPro.RESTAppender;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes,
|
||||||
|
SysUtils,
|
||||||
|
LoggerPro,
|
||||||
|
System.Net.HttpClient;
|
||||||
|
|
||||||
|
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/)
|
||||||
|
}
|
||||||
|
|
||||||
|
TOnCreateData = reference to procedure(const Sender: TObject; const LogItem: TLogItem; const ExtendedInfo: TLoggerProExtendedInfo;
|
||||||
|
var Data: TStream);
|
||||||
|
TOnNetSendError = reference to procedure(const Sender: TObject; const LogItem: TLogItem; const NetError: Exception;
|
||||||
|
var RetryCount: Integer);
|
||||||
|
|
||||||
|
TLoggerProRESTAppender = class(TLoggerProAppenderBase, ILogAppender)
|
||||||
|
strict private
|
||||||
|
FOnCreateData: TOnCreateData;
|
||||||
|
FOnNetSendError: TOnNetSendError;
|
||||||
|
fExtendedInfo: TLoggerProExtendedInfo;
|
||||||
|
fContentType: string;
|
||||||
|
fRESTUrl: string;
|
||||||
|
fLogFormat: string;
|
||||||
|
fFormatSettings: TFormatSettings;
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
fExtendedInfoData: array [low(TLogExtendedInfo) .. high(TLogExtendedInfo)] of string;
|
||||||
|
{$ENDIF}
|
||||||
|
procedure SetOnCreateData(const Value: TOnCreateData);
|
||||||
|
procedure SetOnNetSendError(const Value: TOnNetSendError);
|
||||||
|
strict protected
|
||||||
|
procedure LoadExtendedInfo;
|
||||||
|
function GetExtendedInfo: string;
|
||||||
|
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];
|
||||||
|
DEFAULT_REST_URL = 'http://127.0.0.1:8080/api/logs';
|
||||||
|
procedure InternalWriteLog(const aURI: string; const aLogItem: TLogItem; const aStream: TStream);
|
||||||
|
public
|
||||||
|
function GetRESTUrl: string;
|
||||||
|
procedure SetRESTUrl(const Value: string);
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
constructor Create(aRESTUrl: string = DEFAULT_REST_URL; aContentType: string = 'text/plain';
|
||||||
|
aLogExtendedInfo: TLoggerProExtendedInfo = DEFAULT_EXTENDED_INFO; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||||
|
property RESTUrl: string read GetRESTUrl write SetRESTUrl;
|
||||||
|
property OnCreateData: TOnCreateData read FOnCreateData write SetOnCreateData;
|
||||||
|
property OnNetSendError: TOnNetSendError read FOnNetSendError write SetOnNetSendError;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure Setup; override;
|
||||||
|
function CreateData(const SrcLogItem: TLogItem): TStream; virtual;
|
||||||
|
function FormatLog(const aLogItem: TLogItem): string; virtual;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.NetEncoding,
|
||||||
|
System.IOUtils,
|
||||||
|
System.Net.URLClient
|
||||||
|
{$IF Defined(MSWINDOWS) }
|
||||||
|
,
|
||||||
|
Winapi.Windows
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android) }
|
||||||
|
,
|
||||||
|
Androidapi.JNI.GraphicsContentViewText,
|
||||||
|
Androidapi.JNI.JavaTypes,
|
||||||
|
Androidapi.JNI.Os,
|
||||||
|
Androidapi.JNI.Util,
|
||||||
|
Androidapi.Helpers
|
||||||
|
{$ENDIF}
|
||||||
|
;
|
||||||
|
|
||||||
|
{$IFDEF MSWINDOWS }
|
||||||
|
|
||||||
|
|
||||||
|
function GetUserFromWindows: string;
|
||||||
|
var
|
||||||
|
iLen: Cardinal;
|
||||||
|
begin
|
||||||
|
iLen := 256;
|
||||||
|
Result := StringOfChar(#0, iLen);
|
||||||
|
GetUserName(PChar(Result), iLen);
|
||||||
|
SetLength(Result, iLen - 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetComputerNameFromWindows: string;
|
||||||
|
var
|
||||||
|
iLen: Cardinal;
|
||||||
|
begin
|
||||||
|
iLen := MAX_COMPUTERNAME_LENGTH + 1;
|
||||||
|
Result := StringOfChar(#0, iLen);
|
||||||
|
GetComputerName(PChar(Result), iLen);
|
||||||
|
SetLength(Result, iLen);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
fRESTUrl := aRESTUrl;
|
||||||
|
fLogFormat := aLogFormat;
|
||||||
|
fExtendedInfo := aLogExtendedInfo;
|
||||||
|
fContentType := aContentType;
|
||||||
|
LoadExtendedInfo;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProRESTAppender.CreateData(const SrcLogItem: TLogItem): TStream;
|
||||||
|
var
|
||||||
|
lLog: string;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
try
|
||||||
|
if Assigned(FOnCreateData) then
|
||||||
|
begin
|
||||||
|
FOnCreateData(Self, SrcLogItem, fExtendedInfo, Result);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
lLog := FormatLog(SrcLogItem);
|
||||||
|
Result := TStringStream.Create(FormatLog(SrcLogItem), TEncoding.UTF8);
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
begin
|
||||||
|
FreeAndNil(Result);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProRESTAppender.FormatLog(const aLogItem: TLogItem): string;
|
||||||
|
begin
|
||||||
|
Result := Format(fLogFormat, [datetimetostr(aLogItem.TimeStamp, fFormatSettings), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||||
|
aLogItem.LogMessage, GetExtendedInfo, aLogItem.LogTag]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProRESTAppender.GetExtendedInfo: string;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
if TLogExtendedInfo.EIUserName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result := Result + ';UserName=' + fExtendedInfoData[TLogExtendedInfo.EIUserName];
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIComputerName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result := Result + ';ComputerName=' + fExtendedInfoData[TLogExtendedInfo.EIComputerName];
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result := Result + ';ProcessName=' + fExtendedInfoData[TLogExtendedInfo.EIProcessName];
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result := Result + ';PID=' + fExtendedInfoData[TLogExtendedInfo.EIProcessID];
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
Result := Result + ';ProcessName=' + fExtendedInfoData[TLogExtendedInfo.EIProcessName];
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
Result := '[' + Result.Substring(1) + ']';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProRESTAppender.GetRESTUrl: string;
|
||||||
|
begin
|
||||||
|
Result := fRESTUrl;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.LoadExtendedInfo;
|
||||||
|
begin
|
||||||
|
{$IF DEFINED(MSWINDOWS)}
|
||||||
|
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessID] := IntToStr(GetCurrentProcessId);
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIUserName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIUserName] := GetUserFromWindows;
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIComputerName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIComputerName] := GetComputerNameFromWindows;
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessName] := TPath.GetFileName(GetModuleName(HInstance));
|
||||||
|
end;
|
||||||
|
if TLogExtendedInfo.EIProcessID in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessID] := IntToStr(GetCurrentProcessId);
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
{$IF Defined(Android)}
|
||||||
|
if TLogExtendedInfo.EIProcessName in fExtendedInfo then
|
||||||
|
begin
|
||||||
|
fExtendedInfoData[TLogExtendedInfo.EIProcessName] := TAndroidHelper.ApplicationTitle;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.SetRESTUrl(const Value: string);
|
||||||
|
begin
|
||||||
|
fRESTUrl := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.SetOnCreateData(const Value: TOnCreateData);
|
||||||
|
begin
|
||||||
|
FOnCreateData := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.SetOnNetSendError(const Value: TOnNetSendError);
|
||||||
|
begin
|
||||||
|
FOnNetSendError := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.Setup;
|
||||||
|
begin
|
||||||
|
fFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.TearDown;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.InternalWriteLog(const aURI: string; const aLogItem: TLogItem; const aStream: TStream);
|
||||||
|
var
|
||||||
|
lHTTPCli: THTTPClient;
|
||||||
|
lRetryCount: Integer;
|
||||||
|
lResp: IHTTPResponse;
|
||||||
|
const
|
||||||
|
MAX_RETRY_COUNT = 5;
|
||||||
|
begin
|
||||||
|
lRetryCount := 0;
|
||||||
|
lHTTPCli := THTTPClient.Create;
|
||||||
|
try
|
||||||
|
if Assigned(aStream) then
|
||||||
|
begin
|
||||||
|
repeat
|
||||||
|
try
|
||||||
|
{$IF CompilerVersion >= 31}
|
||||||
|
lHTTPCli.ConnectionTimeout := 1000;
|
||||||
|
lHTTPCli.ResponseTimeout := 3000;
|
||||||
|
{$ENDIF}
|
||||||
|
aStream.Seek(0, soFromBeginning);
|
||||||
|
lResp := lHTTPCli.Post(aURI, aStream, nil, [TNetHeader.Create('content-type', fContentType)]);
|
||||||
|
if not(lResp.StatusCode in [200, 201]) then
|
||||||
|
begin
|
||||||
|
raise ELoggerPro.Create(lResp.ContentAsString);
|
||||||
|
end;
|
||||||
|
Break;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
begin
|
||||||
|
// if there is an event handler for net exception, call it
|
||||||
|
if Assigned(FOnNetSendError) then
|
||||||
|
OnNetSendError(Self, aLogItem, E, lRetryCount);
|
||||||
|
Inc(lRetryCount);
|
||||||
|
// if the handler has set FRetryCount to a positive value then retry the call
|
||||||
|
if lRetryCount >= MAX_RETRY_COUNT then
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(lHTTPCli);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRESTAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lURI: string;
|
||||||
|
lData: TStream;
|
||||||
|
begin
|
||||||
|
lURI := RESTUrl + '/' + TNetEncoding.URL.Encode(aLogItem.LogTag.Trim) + '/' + TNetEncoding.URL.Encode(aLogItem.LogTypeAsString);
|
||||||
|
lData := CreateData(aLogItem);
|
||||||
|
try
|
||||||
|
if Assigned(lData) then
|
||||||
|
InternalWriteLog(lURI, aLogItem, lData);
|
||||||
|
finally
|
||||||
|
lData.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
87
lib/loggerpro/LoggerPro.RedisAppender.pas
Normal file
87
lib/loggerpro/LoggerPro.RedisAppender.pas
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
unit LoggerPro.RedisAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProRedisAppender))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro, System.Classes, System.DateUtils,
|
||||||
|
Redis.Commons {Redis.Commons is included in DelphiRedisClient, also available with GETIT} ,
|
||||||
|
Redis.NetLib.INDY {Redis.NetLib.INDY is included in DelphiRedisClient, also available with GETIT};
|
||||||
|
|
||||||
|
type
|
||||||
|
{
|
||||||
|
@abstract(Logs to a Redis instance)
|
||||||
|
To learn how to use this appender, check the sample @code(remote_redis_appender.dproj)
|
||||||
|
@author(Daniele Teti - d.teti@bittime.it)
|
||||||
|
}
|
||||||
|
TLoggerProRedisAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
FRedis: IRedisClient;
|
||||||
|
FLogKeyPrefix: string;
|
||||||
|
FMaxSize: Int64;
|
||||||
|
public
|
||||||
|
constructor Create(aRedis: IRedisClient; aMaxSize: Int64 = 5000; aKeyPrefix: string = 'loggerpro'); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
procedure TryToRestart(var Restarted: Boolean); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
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);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FRedis := aRedis;
|
||||||
|
FLogKeyPrefix := aKeyPrefix;
|
||||||
|
FMaxSize := aMaxSize;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRedisAppender.Setup;
|
||||||
|
begin
|
||||||
|
FRedis.Connect;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRedisAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRedisAppender.TryToRestart(var Restarted: Boolean);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
Restarted := False;
|
||||||
|
try
|
||||||
|
FRedis.Disconnect
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
try
|
||||||
|
FRedis.Connect;
|
||||||
|
Restarted := True;
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProRedisAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lText: string;
|
||||||
|
lKey: string;
|
||||||
|
begin
|
||||||
|
lText := Format(DEFAULT_LOG_FORMAT, [datetimetostr(aLogItem.TimeStamp),
|
||||||
|
aLogItem.ThreadID, aLogItem.LogTypeAsString, aLogItem.LogMessage,
|
||||||
|
aLogItem.LogTag]);
|
||||||
|
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]);
|
||||||
|
// Trim the list to the FMaxSize last elements
|
||||||
|
FRedis.LTRIM(lKey, -FMaxSize, -1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
53
lib/loggerpro/LoggerPro.SimpleConsoleAppender.pas
Normal file
53
lib/loggerpro/LoggerPro.SimpleConsoleAppender.pas
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
unit LoggerPro.SimpleConsoleAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProSimpleConsoleAppender))
|
||||||
|
@author(David Cornelius) }
|
||||||
|
|
||||||
|
{$IFNDEF CONSOLE}
|
||||||
|
{$MESSAGE FATAL 'This unit should only be used in console applications'}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.Classes, System.SysUtils,
|
||||||
|
LoggerPro;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ @abstract(This appender assumes the application is running from the console and simply uses Writeln
|
||||||
|
without any dependency on Windows to send logs to the current console; this allows console logging from Linux)
|
||||||
|
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;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
|
||||||
|
procedure TLoggerProSimpleConsoleAppender.Setup;
|
||||||
|
begin
|
||||||
|
FFormatSettings := LoggerPro.GetDefaultFormatSettings;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProSimpleConsoleAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
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);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
171
lib/loggerpro/LoggerPro.UDPSyslogAppender.pas
Normal file
171
lib/loggerpro/LoggerPro.UDPSyslogAppender.pas
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
unit LoggerPro.UDPSyslogAppender;
|
||||||
|
{ <@abstract(Contains the Syslog Logger (RFC 5424))
|
||||||
|
@author(https://github.com/nurettin)
|
||||||
|
@author(Daniele Teti)
|
||||||
|
}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro,
|
||||||
|
IdBaseComponent,
|
||||||
|
IdComponent,
|
||||||
|
IdUDPBase,
|
||||||
|
IdUDPClient,
|
||||||
|
IdGlobal;
|
||||||
|
|
||||||
|
type
|
||||||
|
TLoggerProUDPSyslogAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
FLoggerProSyslogAppenderClient: TIdUDPClient;
|
||||||
|
FIP: string;
|
||||||
|
FPort: Integer;
|
||||||
|
FHostName: string;
|
||||||
|
FUserName: string;
|
||||||
|
FApplication: string;
|
||||||
|
FVersion: string;
|
||||||
|
FProcID: string;
|
||||||
|
FUnixLineBreaks: Boolean;
|
||||||
|
FUTF8BOM: Boolean;
|
||||||
|
|
||||||
|
public
|
||||||
|
constructor Create(pIP: string; pPort: Integer; pHostName: string; pUserName: string; pApplication: string;
|
||||||
|
pVersion: string; pProcID: string; pUnixLineBreaks: Boolean; pUTF8BOM: Boolean = False); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
|
||||||
|
property IP: string read FIP write FIP;
|
||||||
|
property Port: Integer read FPort write FPort;
|
||||||
|
property HostName: string read FHostName write FHostName;
|
||||||
|
property UserName: string read FUserName write FUserName;
|
||||||
|
property Application: string read FApplication write FApplication;
|
||||||
|
property Version: string read FVersion write FVersion;
|
||||||
|
property ProcID: string read FProcID write FProcID;
|
||||||
|
property UnixLineBreaks: Boolean read FUnixLineBreaks write FUnixLineBreaks;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLoggerProUDPSyslogPacket = class
|
||||||
|
strict private
|
||||||
|
FPriority: string;
|
||||||
|
FVersion: string;
|
||||||
|
FTimestamp: string;
|
||||||
|
FHostName: string;
|
||||||
|
FUserName: string;
|
||||||
|
FApplication: string;
|
||||||
|
FProcID: string;
|
||||||
|
FThreadID: string;
|
||||||
|
FMessageID: string;
|
||||||
|
FMessageData: string;
|
||||||
|
FUnixLineBreaks: Boolean;
|
||||||
|
FUTF8BOM: Boolean;
|
||||||
|
function GetSyslogData: string;
|
||||||
|
public
|
||||||
|
constructor Create(pLogItem: TLogItem; pHostName: string; pUserName: string; pApplication: string; pVersion: string;
|
||||||
|
pProcID: string; pUnixLineBreaks: Boolean; pUTF8BOM: Boolean = False);
|
||||||
|
property SyslogData: string read GetSyslogData;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.DateUtils,
|
||||||
|
System.SysUtils;
|
||||||
|
{ TLoggerProUDPSyslogAppender }
|
||||||
|
|
||||||
|
constructor TLoggerProUDPSyslogAppender.Create(pIP: string; pPort: Integer; pHostName: string; pUserName: string;
|
||||||
|
pApplication: string; pVersion: string; pProcID: string; pUnixLineBreaks: Boolean; pUTF8BOM: Boolean);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FIP := pIP;
|
||||||
|
FPort := pPort;
|
||||||
|
FHostName := pHostName;
|
||||||
|
FUserName := pUserName;
|
||||||
|
FApplication := pApplication;
|
||||||
|
FVersion := pVersion;
|
||||||
|
FProcID := pProcID;
|
||||||
|
FUnixLineBreaks := pUnixLineBreaks;
|
||||||
|
FUTF8BOM := pUTF8BOM;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProUDPSyslogAppender.Setup;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
FLoggerProSyslogAppenderClient := TIdUDPClient.Create(nil);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProUDPSyslogAppender.TearDown;
|
||||||
|
begin
|
||||||
|
FLoggerProSyslogAppenderClient.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProUDPSyslogAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lPacket: TLoggerProUDPSyslogPacket;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
lPacket := TLoggerProUDPSyslogPacket.Create(aLogItem, FHostName, FUserName, FApplication, FVersion, FProcID,
|
||||||
|
FUnixLineBreaks, FUTF8BOM);
|
||||||
|
try
|
||||||
|
FLoggerProSyslogAppenderClient.Broadcast(lPacket.SyslogData, FPort, FIP, IndyTextEncoding_UTF8);
|
||||||
|
finally
|
||||||
|
lPacket.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLoggerProUDPSyslogPacket }
|
||||||
|
|
||||||
|
function RFC5424Priority(pFacility, pSeverity: Integer): string;
|
||||||
|
begin
|
||||||
|
Result := '<' + IntToStr(pFacility * 8 + pSeverity) + '>';
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TLoggerProUDPSyslogPacket.Create(pLogItem: TLogItem; pHostName: string; pUserName: string;
|
||||||
|
pApplication: string; pVersion: string; pProcID: string; pUnixLineBreaks: Boolean; pUTF8BOM: Boolean);
|
||||||
|
begin
|
||||||
|
case pLogItem.LogType of
|
||||||
|
TLogType.Debug:
|
||||||
|
FPriority := RFC5424Priority(1, 7);
|
||||||
|
TLogType.Info:
|
||||||
|
FPriority := RFC5424Priority(1, 6);
|
||||||
|
TLogType.Warning:
|
||||||
|
FPriority := RFC5424Priority(1, 5);
|
||||||
|
TLogType.Error:
|
||||||
|
FPriority := RFC5424Priority(1, 4);
|
||||||
|
end;
|
||||||
|
if pLogItem.LogMessage.Contains('Access Violation') then
|
||||||
|
FPriority := RFC5424Priority(1, 3);
|
||||||
|
FApplication := pApplication;
|
||||||
|
FVersion := pVersion;
|
||||||
|
FTimestamp := DateToISO8601(pLogItem.Timestamp);
|
||||||
|
FHostName := pHostName;
|
||||||
|
FUserName := pUserName;
|
||||||
|
FApplication := pApplication;
|
||||||
|
FVersion := pVersion;
|
||||||
|
FProcID := pProcID;
|
||||||
|
FThreadID := IntToStr(pLogItem.ThreadID);
|
||||||
|
FMessageID := pLogItem.LogTag;
|
||||||
|
FUnixLineBreaks := pUnixLineBreaks;
|
||||||
|
if FUnixLineBreaks then
|
||||||
|
FMessageData := pLogItem.LogMessage.Replace(sLineBreak, '#10', [rfReplaceAll])
|
||||||
|
else
|
||||||
|
FMessageData := pLogItem.LogMessage;
|
||||||
|
FUTF8BOM := pUTF8BOM;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProUDPSyslogPacket.GetSyslogData: string;
|
||||||
|
const
|
||||||
|
IANAVersion = '1';
|
||||||
|
begin
|
||||||
|
Result :=
|
||||||
|
// NOT; RFC 5424 6.2 HEADER
|
||||||
|
FPriority + IANAVersion + ' ' + FTimestamp + ' ' + FHostName + ' ' + FApplication + ' ' + FProcID + ' ' + FMessageID
|
||||||
|
// NOT; RFC 5424, 6.5 ex 1 no structured data
|
||||||
|
+ ' - ' + iif(FUTF8BOM, #$EF#$BB#$BF) + FUserName + ' ' + FVersion + ' '
|
||||||
|
+ FThreadID + ' ' + FMessageData;
|
||||||
|
// NOT; RFC 5424 structured data, uncomment and use if needed
|
||||||
|
// + ' [MySDID@1 ' + 'UserName="' + FUserName + '" Version="' + FVersion + '" ThreadId="' + FThreadID + '" MessageData="' + FMessageData + '"]' + ...;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
74
lib/loggerpro/LoggerPro.Utils.pas
Normal file
74
lib/loggerpro/LoggerPro.Utils.pas
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
unit LoggerPro.Utils;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils;
|
||||||
|
|
||||||
|
function AppPath: string;
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
function WUserName: string;
|
||||||
|
function FileVersion(const FileName: TFileName): string;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF MSWINDOWS} Winapi.Windows, {$ENDIF}
|
||||||
|
System.IOUtils;
|
||||||
|
|
||||||
|
var
|
||||||
|
GAppPath: string = '';
|
||||||
|
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
function WUserName: string;
|
||||||
|
var
|
||||||
|
nSize: DWord;
|
||||||
|
begin
|
||||||
|
nSize := 1024;
|
||||||
|
SetLength(Result, nSize);
|
||||||
|
if GetUserName(PChar(Result), nSize) then
|
||||||
|
SetLength(Result, nSize - 1)
|
||||||
|
else
|
||||||
|
RaiseLastOSError;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
function FileVersion(const FileName: TFileName): string;
|
||||||
|
var
|
||||||
|
VerInfoSize: Cardinal;
|
||||||
|
VerValueSize: Cardinal;
|
||||||
|
Dummy: Cardinal;
|
||||||
|
PVerInfo: Pointer;
|
||||||
|
PVerValue: PVSFixedFileInfo;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
VerInfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy);
|
||||||
|
GetMem(PVerInfo, VerInfoSize);
|
||||||
|
try
|
||||||
|
if GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, PVerInfo) then
|
||||||
|
if VerQueryValue(PVerInfo, '\', Pointer(PVerValue), VerValueSize) then
|
||||||
|
with PVerValue^ do
|
||||||
|
Result := Format('v%d.%d.%d build %d', [
|
||||||
|
HiWord(dwFileVersionMS), // Major
|
||||||
|
LoWord(dwFileVersionMS), // Minor
|
||||||
|
HiWord(dwFileVersionLS), // Release
|
||||||
|
LoWord(dwFileVersionLS)]); // Build
|
||||||
|
finally
|
||||||
|
FreeMem(PVerInfo, VerInfoSize);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
function AppPath: string;
|
||||||
|
begin
|
||||||
|
Result := GAppPath;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
|
||||||
|
GAppPath := IncludeTrailingPathDelimiter(TPath.GetDirectoryName(GetModuleName(HInstance)));
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
91
lib/loggerpro/LoggerPro.VCLListBoxAppender.pas
Normal file
91
lib/loggerpro/LoggerPro.VCLListBoxAppender.pas
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
unit LoggerPro.VCLListBoxAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use the @link(TVCLListBoxAppender))
|
||||||
|
@author(David Cornelius) }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro,
|
||||||
|
System.Classes,
|
||||||
|
Vcl.StdCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ @abstract(Appends formatted @link(TLogItem) to a TListBox in a VCL application) }
|
||||||
|
TVCLListBoxAppender = class(TLoggerProAppenderBase)
|
||||||
|
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]';
|
||||||
|
constructor Create(aLB: TListBox; aMaxLogLines: Word = 500; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils;
|
||||||
|
|
||||||
|
{ TVCLListBoxAppender }
|
||||||
|
|
||||||
|
constructor TVCLListBoxAppender.Create(aLB: TListBox; aMaxLogLines: Word; aLogFormat: string);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FLogFormat := aLogFormat;
|
||||||
|
FLB := aLB;
|
||||||
|
FMaxLogLines := aMaxLogLines;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLListBoxAppender.Setup;
|
||||||
|
begin
|
||||||
|
TThread.Synchronize(nil,
|
||||||
|
procedure
|
||||||
|
begin
|
||||||
|
FLB.Clear;
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLListBoxAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLListBoxAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lText: string;
|
||||||
|
begin
|
||||||
|
lText := Format(FLogFormat, [datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||||
|
aLogItem.LogMessage, aLogItem.LogTag]);
|
||||||
|
TThread.Queue(nil,
|
||||||
|
procedure
|
||||||
|
var
|
||||||
|
Lines: integer;
|
||||||
|
begin
|
||||||
|
FLB.Items.BeginUpdate;
|
||||||
|
try
|
||||||
|
Lines := FLB.Items.Count;
|
||||||
|
if Lines > FMaxLogLines then
|
||||||
|
FLB.Items.Delete(0);
|
||||||
|
FLB.AddItem(lText, nil);
|
||||||
|
FLB.ItemIndex := FLB.Items.Count - 1;
|
||||||
|
finally
|
||||||
|
FLB.Items.EndUpdate;
|
||||||
|
end;
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
96
lib/loggerpro/LoggerPro.VCLListViewAppender.pas
Normal file
96
lib/loggerpro/LoggerPro.VCLListViewAppender.pas
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
unit LoggerPro.VCLListViewAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use the @link(TVCLMemoLogAppender))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro,
|
||||||
|
System.Classes,
|
||||||
|
Vcl.ComCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ @abstract(Appends formatted @link(TLogItem) to a TMemo in a VCL application) }
|
||||||
|
TVCLListViewAppender = class(TLoggerProAppenderBase)
|
||||||
|
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]';
|
||||||
|
constructor Create(aLV: TListView; aMaxLogLines: Word = 500; aLogFormat: string = DEFAULT_LOG_FORMAT); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils,
|
||||||
|
Winapi.Windows,
|
||||||
|
Winapi.Messages;
|
||||||
|
|
||||||
|
{ TVCLMemoLogAppender }
|
||||||
|
|
||||||
|
constructor TVCLListViewAppender.Create(aLV: TListView; aMaxLogLines: Word; aLogFormat: string);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FLogFormat := aLogFormat;
|
||||||
|
FLV := aLV;
|
||||||
|
FMaxLogLines := aMaxLogLines;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLListViewAppender.Setup;
|
||||||
|
begin
|
||||||
|
TThread.Synchronize(nil,
|
||||||
|
procedure
|
||||||
|
begin
|
||||||
|
FLV.Clear;
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLListViewAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLListViewAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
var
|
||||||
|
lText: string;
|
||||||
|
begin
|
||||||
|
lText := Format(FLogFormat, [datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID, aLogItem.LogTypeAsString,
|
||||||
|
aLogItem.LogMessage, aLogItem.LogTag]);
|
||||||
|
TThread.Queue(nil,
|
||||||
|
procedure
|
||||||
|
var
|
||||||
|
Lines: integer;
|
||||||
|
begin
|
||||||
|
FLV.Items.BeginUpdate;
|
||||||
|
try
|
||||||
|
Lines := FLV.Items.Count;
|
||||||
|
if Lines > FMaxLogLines then
|
||||||
|
begin
|
||||||
|
FLV.Items.Delete(0);
|
||||||
|
end;
|
||||||
|
FLV.AddItem(lText, nil)
|
||||||
|
finally
|
||||||
|
FLV.Items.EndUpdate;
|
||||||
|
end;
|
||||||
|
FLV.Scroll(0, FLV.Items.Count);
|
||||||
|
SendMessage(FLV.Handle, EM_SCROLLCARET, 0, 0);
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
84
lib/loggerpro/LoggerPro.VCLMemoAppender.pas
Normal file
84
lib/loggerpro/LoggerPro.VCLMemoAppender.pas
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
unit LoggerPro.VCLMemoAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use the @link(TVCLMemoLogAppender))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro,
|
||||||
|
System.Classes,
|
||||||
|
Vcl.StdCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ @abstract(Appends formatted @link(TLogItem) to a TMemo in a VCL application) }
|
||||||
|
TVCLMemoLogAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
FMemo: TMemo;
|
||||||
|
FMaxLogLines: Word;
|
||||||
|
FClearOnStartup: Boolean;
|
||||||
|
public
|
||||||
|
constructor Create(aMemo: TMemo; aMaxLogLines: Word = 100; aClearOnStartup: Boolean = False); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils,
|
||||||
|
Winapi.Windows,
|
||||||
|
Winapi.Messages;
|
||||||
|
|
||||||
|
const
|
||||||
|
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
||||||
|
|
||||||
|
{ TVCLMemoLogAppender }
|
||||||
|
|
||||||
|
constructor TVCLMemoLogAppender.Create(aMemo: TMemo; aMaxLogLines: Word; aClearOnStartup: Boolean);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FMemo := aMemo;
|
||||||
|
FMaxLogLines := aMaxLogLines;
|
||||||
|
FClearOnStartup := aClearOnStartup;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLMemoLogAppender.Setup;
|
||||||
|
begin
|
||||||
|
if FClearOnStartup then
|
||||||
|
begin
|
||||||
|
TThread.Synchronize(nil,
|
||||||
|
procedure
|
||||||
|
begin
|
||||||
|
FMemo.Clear;
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVCLMemoLogAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
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]);
|
||||||
|
TThread.Queue(nil,
|
||||||
|
procedure
|
||||||
|
begin
|
||||||
|
FMemo.Lines.BeginUpdate;
|
||||||
|
try
|
||||||
|
if FMemo.Lines.Count = FMaxLogLines then
|
||||||
|
FMemo.Lines.Delete(0);
|
||||||
|
FMemo.Lines.Add(lText)
|
||||||
|
finally
|
||||||
|
FMemo.Lines.EndUpdate;
|
||||||
|
end;
|
||||||
|
SendMessage(FMemo.Handle, EM_SCROLLCARET, 0, 0);
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
61
lib/loggerpro/LoggerPro.WindowsEventLogAppender.pas
Normal file
61
lib/loggerpro/LoggerPro.WindowsEventLogAppender.pas
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
unit LoggerPro.WindowsEventLogAppender;
|
||||||
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProWindowsEventLogAppender))
|
||||||
|
@author(David Cornelius) }
|
||||||
|
|
||||||
|
{$IFNDEF MSWINDOWS}
|
||||||
|
{$MESSAGE FATAL 'This unit only works with Windows'}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Vcl.SvcMgr,
|
||||||
|
LoggerPro;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ @abstract(This appender is for logging from Windows Services to the Windows Event Log) }
|
||||||
|
TLoggerProWindowsEventLogAppender = class(TLoggerProAppenderBase)
|
||||||
|
private
|
||||||
|
FService: TService;
|
||||||
|
public
|
||||||
|
constructor Create(AService: TService); reintroduce;
|
||||||
|
procedure Setup; override;
|
||||||
|
procedure TearDown; override;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
Winapi.Windows;
|
||||||
|
|
||||||
|
constructor TLoggerProWindowsEventLogAppender.Create(AService: TService);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FService := AService;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProWindowsEventLogAppender.Setup;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProWindowsEventLogAppender.TearDown;
|
||||||
|
begin
|
||||||
|
// do nothing
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProWindowsEventLogAppender.WriteLog(const aLogItem: TLogItem);
|
||||||
|
begin
|
||||||
|
case aLogItem.LogType of
|
||||||
|
TLogType.Debug,
|
||||||
|
TLogType.Info:
|
||||||
|
FService.LogMessage(aLogItem.LogMessage, EVENTLOG_INFORMATION_TYPE);
|
||||||
|
TLogType.Warning:
|
||||||
|
FService.LogMessage(aLogItem.LogMessage, EVENTLOG_WARNING_TYPE);
|
||||||
|
TLogType.Error:
|
||||||
|
FService.LogMessage(aLogItem.LogMessage, EVENTLOG_ERROR_TYPE);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
895
lib/loggerpro/LoggerPro.pas
Normal file
895
lib/loggerpro/LoggerPro.pas
Normal file
@ -0,0 +1,895 @@
|
|||||||
|
unit LoggerPro;
|
||||||
|
{ <@abstract(Contains the LoggerPro core. Include this if you want to create your own logger, otherwise you can use the global one using @link(LoggerPro.GlobalLogger.pas))
|
||||||
|
@author(Daniele Teti) }
|
||||||
|
|
||||||
|
{$SCOPEDENUMS ON}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.Generics.Collections,
|
||||||
|
System.SysUtils,
|
||||||
|
System.Classes,
|
||||||
|
ThreadSafeQueueU;
|
||||||
|
|
||||||
|
var
|
||||||
|
DefaultLoggerProMainQueueSize: Cardinal = 50000;
|
||||||
|
DefaultLoggerProAppenderQueueSize: Cardinal = 50000;
|
||||||
|
|
||||||
|
type
|
||||||
|
TLogType = (Debug = 0, Info, Warning, Error);
|
||||||
|
TLogErrorReason = (QueueFull);
|
||||||
|
TLogErrorAction = (SkipNewest, DiscardOlder);
|
||||||
|
TLogExtendedInfo = (EIUserName, EIComputerName, EIProcessName, EIProcessID, EIDeviceID { mobile });
|
||||||
|
TLoggerProExtendedInfo = set of TLogExtendedInfo;
|
||||||
|
|
||||||
|
{ @abstract(Represent the single log item)
|
||||||
|
Each call to some kind of log method is wrapped in a @link(TLogItem)
|
||||||
|
instance and passed down the layour of LoggerPro. }
|
||||||
|
TLogItem = class sealed
|
||||||
|
private
|
||||||
|
FType: TLogType;
|
||||||
|
FMessage: string;
|
||||||
|
FTag: string;
|
||||||
|
FTimeStamp: TDateTime;
|
||||||
|
FThreadID: TThreadID;
|
||||||
|
function GetLogTypeAsString: string;
|
||||||
|
public
|
||||||
|
constructor Create(const aType: TLogType; const aMessage: string; const aTag: string); overload;
|
||||||
|
constructor Create(const aType: TLogType; const aMessage: string; const aTag: string; const aTimeStamp: TDateTime;
|
||||||
|
const aThreadID: TThreadID); overload;
|
||||||
|
|
||||||
|
function Clone: TLogItem;
|
||||||
|
{ @abstract(The type of the log)
|
||||||
|
Log can be one of the following types:
|
||||||
|
@unorderedlist(
|
||||||
|
@item(DEBUG)
|
||||||
|
@item(INFO)
|
||||||
|
@item(WARNING)
|
||||||
|
@item(ERROR)
|
||||||
|
) }
|
||||||
|
property LogType: TLogType read FType;
|
||||||
|
{ @abstract(The text of the log message) }
|
||||||
|
property LogMessage: string read FMessage;
|
||||||
|
{ @abstract(The tag of the log message) }
|
||||||
|
property LogTag: string read FTag;
|
||||||
|
{ @abstract(The timestamp when the @link(TLogItem) is generated) }
|
||||||
|
property TimeStamp: TDateTime read FTimeStamp;
|
||||||
|
{ @abstract(The IDof the thread which generated the log item) }
|
||||||
|
property ThreadID: TThreadID read FThreadID;
|
||||||
|
{ @abstract(The type of the log converted in string) }
|
||||||
|
property LogTypeAsString: string read GetLogTypeAsString;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLoggerProAppenderErrorEvent = reference to procedure(const AppenderClassName: string; const aFailedLogItem: TLogItem;
|
||||||
|
const Reason: TLogErrorReason; var Action: TLogErrorAction);
|
||||||
|
|
||||||
|
TLoggerProEventsHandler = class sealed
|
||||||
|
public
|
||||||
|
OnAppenderError: TLoggerProAppenderErrorEvent;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ @abstract(Interface implemented by all the classes used as appenders) }
|
||||||
|
ILogAppender = interface
|
||||||
|
['{58AFB557-C594-4A4B-8DC9-0F13B37F60CB}']
|
||||||
|
{ @abstract(This method is internally called by LoggerPro to initialize the appender) }
|
||||||
|
procedure Setup;
|
||||||
|
{ @abstract(This method is called at each log item represented by @link(TLogItem))
|
||||||
|
The appender should be as-fast-as-it-can to handle the message, however
|
||||||
|
each appender runs in a separated thread. }
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem);
|
||||||
|
{ @abstract(This method is internally called by LoggerPro to deinitialize the appender) }
|
||||||
|
procedure TearDown;
|
||||||
|
// { @abstract(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) is enough }
|
||||||
|
// procedure SetEnabled(const Value: Boolean);
|
||||||
|
// { @abstract(Returns if the logappender is currently enabled or not. }
|
||||||
|
// function IsEnabled: Boolean;
|
||||||
|
{ @abstract(Set a custom log level for this appender. This value must be lower than the global LogWriter log level. }
|
||||||
|
procedure SetLogLevel(const Value: TLogType);
|
||||||
|
{ @abstract(Get the loglevel for the appender. }
|
||||||
|
function GetLogLevel: TLogType;
|
||||||
|
{ @abstract(If the appender is disabled, this method is called at each new
|
||||||
|
logitem. This method should not raise exceptions and should try to restart the appender
|
||||||
|
at specified time and only if some appropriate seconds/miutes are elapsed between the
|
||||||
|
LastErrorTimestamp. }
|
||||||
|
procedure TryToRestart(var Restarted: Boolean);
|
||||||
|
|
||||||
|
procedure SetLastErrorTimeStamp(const LastErrorTimeStamp: TDateTime);
|
||||||
|
function GetLastErrorTimeStamp: TDateTime;
|
||||||
|
property LastErrorTimeStamp: TDateTime read GetLastErrorTimeStamp write SetLastErrorTimeStamp;
|
||||||
|
end;
|
||||||
|
|
||||||
|
ELoggerPro = class(Exception)
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
TAppenderQueue = class(TThreadSafeQueue<TLogItem>)
|
||||||
|
end;
|
||||||
|
|
||||||
|
ILogWriter = interface
|
||||||
|
['{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;
|
||||||
|
procedure DebugFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string); deprecated;
|
||||||
|
|
||||||
|
procedure Info(const aMessage: string; const aTag: string); overload;
|
||||||
|
procedure Info(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||||
|
procedure InfoFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string); deprecated;
|
||||||
|
|
||||||
|
procedure Warn(const aMessage: string; const aTag: string); overload;
|
||||||
|
procedure Warn(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||||
|
procedure WarnFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string); deprecated;
|
||||||
|
|
||||||
|
procedure Error(const aMessage: string; const aTag: string); overload;
|
||||||
|
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); deprecated;
|
||||||
|
|
||||||
|
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>;
|
||||||
|
|
||||||
|
TAppenderThread = class(TThread)
|
||||||
|
private
|
||||||
|
FLogAppender: ILogAppender;
|
||||||
|
FAppenderQueue: TAppenderQueue;
|
||||||
|
FFailing: Boolean;
|
||||||
|
procedure SetFailing(const Value: Boolean);
|
||||||
|
protected
|
||||||
|
procedure Execute; override;
|
||||||
|
|
||||||
|
type
|
||||||
|
TAppenderStatus = (BeforeSetup, Running, WaitAfterFail, ToRestart, BeforeTearDown);
|
||||||
|
public
|
||||||
|
constructor Create(aLogAppender: ILogAppender; aAppenderQueue: TAppenderQueue);
|
||||||
|
property Failing: Boolean read FFailing write SetFailing;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLoggerThread = class(TThread)
|
||||||
|
private type
|
||||||
|
TAppenderAdapter = class
|
||||||
|
private
|
||||||
|
FAppenderQueue: TAppenderQueue;
|
||||||
|
FAppenderThread: TAppenderThread;
|
||||||
|
FLogAppender: ILogAppender;
|
||||||
|
FFailsCount: Cardinal;
|
||||||
|
public
|
||||||
|
constructor Create(aAppender: ILogAppender); virtual;
|
||||||
|
destructor Destroy; override;
|
||||||
|
function EnqueueLog(const aLogItem: TLogItem): Boolean;
|
||||||
|
property Queue: TAppenderQueue read FAppenderQueue;
|
||||||
|
property FailsCount: Cardinal read FFailsCount;
|
||||||
|
function GetLogLevel: TLogType;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TAppenderAdaptersList = class(TObjectList<TAppenderAdapter>)
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
private
|
||||||
|
FQueue: TThreadSafeQueue<TLogItem>;
|
||||||
|
FAppenders: TLogAppenderList;
|
||||||
|
FEventsHandlers: TLoggerProEventsHandler;
|
||||||
|
FAppendersDecorators: TObjectList<TAppenderAdapter>;
|
||||||
|
function BuildAppendersDecorator: TAppenderAdaptersList;
|
||||||
|
procedure DoOnAppenderError(const FailAppenderClassName: string; const aFailedLogItem: TLogItem; const aReason: TLogErrorReason;
|
||||||
|
var aAction: TLogErrorAction);
|
||||||
|
procedure SetEventsHandlers(const Value: TLoggerProEventsHandler);
|
||||||
|
protected
|
||||||
|
procedure Execute; override;
|
||||||
|
procedure DoTerminate; override;
|
||||||
|
public
|
||||||
|
constructor Create(aAppenders: TLogAppenderList);
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
property EventsHandlers: TLoggerProEventsHandler read FEventsHandlers write SetEventsHandlers;
|
||||||
|
property LogWriterQueue: TThreadSafeQueue < TLogItem > read FQueue;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLoggerProInterfacedObject = class(TInterfacedObject)
|
||||||
|
protected
|
||||||
|
function _AddRef: Integer; stdcall;
|
||||||
|
function _Release: Integer; stdcall;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TLogWriter = class(TLoggerProInterfacedObject, ILogWriter)
|
||||||
|
private
|
||||||
|
FLoggerThread: TLoggerThread;
|
||||||
|
FLogAppenders: TLogAppenderList;
|
||||||
|
FFreeAllowed: Boolean;
|
||||||
|
FLogLevel: TLogType;
|
||||||
|
procedure Initialize(aEventsHandler: TLoggerProEventsHandler);
|
||||||
|
function GetAppendersClassNames: TArray<string>;
|
||||||
|
public
|
||||||
|
function GetAppenders(const Index: 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 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);
|
||||||
|
|
||||||
|
procedure Info(const aMessage: string; const aTag: string); overload;
|
||||||
|
procedure Info(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||||
|
procedure InfoFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||||
|
|
||||||
|
procedure Warn(const aMessage: string; const aTag: string); overload;
|
||||||
|
procedure Warn(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
|
||||||
|
procedure WarnFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||||
|
|
||||||
|
procedure Error(const aMessage: string; const aTag: string); overload;
|
||||||
|
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;
|
||||||
|
|
||||||
|
TLoggerProAppenderBase = class abstract(TInterfacedObject, ILogAppender)
|
||||||
|
private
|
||||||
|
FLogLevel: TLogType;
|
||||||
|
FEnabled: Boolean;
|
||||||
|
FLastErrorTimeStamp: TDateTime;
|
||||||
|
public
|
||||||
|
constructor Create; virtual;
|
||||||
|
procedure Setup; virtual; abstract;
|
||||||
|
procedure WriteLog(const aLogItem: TLogItem); virtual; abstract;
|
||||||
|
procedure TearDown; virtual; abstract;
|
||||||
|
procedure TryToRestart(var Restarted: Boolean); virtual;
|
||||||
|
procedure SetLogLevel(const Value: TLogType);
|
||||||
|
function GetLogLevel: TLogType; inline;
|
||||||
|
procedure SetLastErrorTimeStamp(const Value: TDateTime);
|
||||||
|
function GetLastErrorTimeStamp: TDateTime;
|
||||||
|
property LogLevel: TLogType read GetLogLevel write SetLogLevel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ @abstract(Builds a new ILogWriter instance. Call this global function to start logging like a pro.)
|
||||||
|
Here's a sample unit that you can use in your code
|
||||||
|
@longcode(#
|
||||||
|
unit LoggerProConfig;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro;
|
||||||
|
|
||||||
|
function Log: ILogWriter;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
LoggerPro.FileAppender;
|
||||||
|
|
||||||
|
var
|
||||||
|
_Log: ILogWriter;
|
||||||
|
|
||||||
|
function Log: ILogWriter;
|
||||||
|
begin
|
||||||
|
Result := _Log;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
|
||||||
|
//If you need other appenders, feel free to add them here in the array
|
||||||
|
_Log := BuildLogWriter([TLoggerProFileAppender.Create(10, 5)]);
|
||||||
|
|
||||||
|
end.
|
||||||
|
#)
|
||||||
|
|
||||||
|
Add this unit to your project, then when you need to use the logger, include
|
||||||
|
the unit and call one of the followings:
|
||||||
|
@unorderedlist(
|
||||||
|
@item(Log.Debug('This is a debug message', 'tag1'))
|
||||||
|
@item(Log.Info('This is an information message', 'tag1'))
|
||||||
|
@item(Log.Warn('This is a warning message', 'tag1'))
|
||||||
|
@item(Log.Error('This is an error message', 'tag1'))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetDefaultFormatSettings: TFormatSettings;
|
||||||
|
function StringToLogType(const aLogType: string): TLogType;
|
||||||
|
function BuildLogWriter(aAppenders: array of ILogAppender; aEventsHandlers: TLoggerProEventsHandler = nil;
|
||||||
|
aLogLevel: TLogType = TLogType.Debug): ILogWriter;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.Types,
|
||||||
|
LoggerPro.FileAppender,
|
||||||
|
System.SyncObjs,
|
||||||
|
System.DateUtils,
|
||||||
|
System.IOUtils;
|
||||||
|
|
||||||
|
function GetDefaultFormatSettings: TFormatSettings;
|
||||||
|
begin
|
||||||
|
Result.DateSeparator := '-';
|
||||||
|
Result.TimeSeparator := ':';
|
||||||
|
Result.ShortDateFormat := 'YYYY-MM-DD HH:NN:SS:ZZZ';
|
||||||
|
Result.ShortTimeFormat := 'HH:NN:SS';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function StringToLogType(const aLogType: string): TLogType;
|
||||||
|
var
|
||||||
|
lLogType: string;
|
||||||
|
begin
|
||||||
|
lLogType := LowerCase(Trim(aLogType));
|
||||||
|
if lLogType = 'debug' then
|
||||||
|
Exit(TLogType.Debug);
|
||||||
|
if lLogType = 'info' then
|
||||||
|
Exit(TLogType.Info);
|
||||||
|
if lLogType = 'warning' then
|
||||||
|
Exit(TLogType.Warning);
|
||||||
|
if lLogType = 'error' then
|
||||||
|
Exit(TLogType.Error);
|
||||||
|
raise ELoggerPro.CreateFmt('Invalid LogType: ', [aLogType]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function BuildLogWriter(aAppenders: array of ILogAppender; aEventsHandlers: TLoggerProEventsHandler; aLogLevel: TLogType): ILogWriter;
|
||||||
|
var
|
||||||
|
lLogAppenders: TLogAppenderList;
|
||||||
|
lLogAppender: ILogAppender;
|
||||||
|
begin
|
||||||
|
lLogAppenders := TLogAppenderList.Create;
|
||||||
|
for lLogAppender in aAppenders do
|
||||||
|
begin
|
||||||
|
lLogAppenders.Add(lLogAppender);
|
||||||
|
end;
|
||||||
|
Result := TLogWriter.Create(lLogAppenders, aLogLevel);
|
||||||
|
TLogWriter(Result).Initialize(aEventsHandlers);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLogger.TLogWriter }
|
||||||
|
|
||||||
|
function TLogWriter.AppendersCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := Self.FLogAppenders.Count;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TLogWriter.Create(aLogAppenders: TLogAppenderList; aLogLevel: TLogType);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FFreeAllowed := False;
|
||||||
|
FLogAppenders := aLogAppenders;
|
||||||
|
FLogLevel := aLogLevel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TLogWriter.Create(aLogLevel: TLogType);
|
||||||
|
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;
|
||||||
|
begin
|
||||||
|
FLoggerThread.Terminate;
|
||||||
|
FLoggerThread.WaitFor;
|
||||||
|
FLoggerThread.Free;
|
||||||
|
FLogAppenders.Free;
|
||||||
|
inherited;
|
||||||
|
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;
|
||||||
|
|
||||||
|
function TLogWriter.GetAppenders(const Index: Integer): ILogAppender;
|
||||||
|
begin
|
||||||
|
Result := Self.FLogAppenders[index];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLogWriter.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);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
i := Self.FLoggerThread.FAppenders.IndexOf(aAppender);
|
||||||
|
if i >= 0 then
|
||||||
|
Self.FLoggerThread.FAppenders.Delete(i);
|
||||||
|
|
||||||
|
i := Self.FLogAppenders.IndexOf(aAppender);
|
||||||
|
if i >= 0 then
|
||||||
|
Self.FLogAppenders.Delete(i);
|
||||||
|
|
||||||
|
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>;
|
||||||
|
var
|
||||||
|
I: Cardinal;
|
||||||
|
begin
|
||||||
|
TMonitor.Enter(FLogAppenders);
|
||||||
|
try
|
||||||
|
SetLength(Result, FLogAppenders.Count);
|
||||||
|
for I := 0 to FLogAppenders.Count - 1 do
|
||||||
|
begin
|
||||||
|
Result[I] := TObject(FLogAppenders[I]).ClassName;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
TMonitor.Exit(FLogAppenders);
|
||||||
|
end;
|
||||||
|
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, aTag: string);
|
||||||
|
var
|
||||||
|
lLogItem: TLogItem;
|
||||||
|
begin
|
||||||
|
if aType >= FLogLevel then
|
||||||
|
begin
|
||||||
|
lLogItem := TLogItem.Create(aType, aMessage, aTag);
|
||||||
|
try
|
||||||
|
if not FLoggerThread.LogWriterQueue.Enqueue(lLogItem) then
|
||||||
|
begin
|
||||||
|
raise ELoggerPro.Create
|
||||||
|
('Main logs queue is full. Hints: Are there appenders? Are these appenders fast enough considering the log item production?');
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
FreeAndNil(lLogItem);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
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);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLogWriter.LogFmt(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string);
|
||||||
|
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
|
||||||
|
Log(TLogType.Warning, aMessage, aTag);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLogWriter.Warn(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||||
|
begin
|
||||||
|
Log(TLogType.Warning, aMessage, aParams, aTag);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLogWriter.WarnFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
|
||||||
|
begin
|
||||||
|
Warn(aMessage, aParams, aTag);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLogger.TLogItem }
|
||||||
|
|
||||||
|
function TLogItem.Clone: TLogItem;
|
||||||
|
begin
|
||||||
|
Result := TLogItem.Create(FType, FMessage, FTag, FTimeStamp, FThreadID);
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TLogItem.Create(const aType: TLogType; const aMessage, aTag: string);
|
||||||
|
begin
|
||||||
|
Create(aType, aMessage, aTag, now, TThread.CurrentThread.ThreadID);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLogger.TLoggerThread }
|
||||||
|
|
||||||
|
constructor TLoggerThread.Create(aAppenders: TLogAppenderList);
|
||||||
|
begin
|
||||||
|
FQueue := TThreadSafeQueue<TLogItem>.Create(DefaultLoggerProMainQueueSize, 500);
|
||||||
|
FAppenders := aAppenders;
|
||||||
|
inherited Create(true);
|
||||||
|
FreeOnTerminate := False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TLoggerThread.Destroy;
|
||||||
|
begin
|
||||||
|
FQueue.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerThread.DoOnAppenderError(const FailAppenderClassName: string; const aFailedLogItem: TLogItem;
|
||||||
|
const aReason: TLogErrorReason; var aAction: TLogErrorAction);
|
||||||
|
begin
|
||||||
|
if Assigned(FEventsHandlers) and (Assigned(FEventsHandlers.OnAppenderError)) then
|
||||||
|
begin
|
||||||
|
FEventsHandlers.OnAppenderError(FailAppenderClassName, aFailedLogItem, aReason, aAction);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerThread.DoTerminate;
|
||||||
|
begin
|
||||||
|
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerThread.Execute;
|
||||||
|
var
|
||||||
|
lQSize: UInt64;
|
||||||
|
lLogItem: TLogItem;
|
||||||
|
I: Integer;
|
||||||
|
lAction: TLogErrorAction;
|
||||||
|
lWaitResult: TWaitResult;
|
||||||
|
begin
|
||||||
|
FAppendersDecorators := BuildAppendersDecorator;
|
||||||
|
try
|
||||||
|
while true do
|
||||||
|
begin
|
||||||
|
lWaitResult := FQueue.Dequeue(lQSize, lLogItem);
|
||||||
|
case lWaitResult of
|
||||||
|
wrSignaled:
|
||||||
|
begin
|
||||||
|
if lLogItem <> nil then
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
for I := 0 to FAppendersDecorators.Count - 1 do
|
||||||
|
begin
|
||||||
|
if lLogItem.LogType >= FAppendersDecorators[I].GetLogLevel then
|
||||||
|
begin
|
||||||
|
if not FAppendersDecorators[I].EnqueueLog(lLogItem) then
|
||||||
|
begin
|
||||||
|
lAction := TLogErrorAction.SkipNewest; // default
|
||||||
|
DoOnAppenderError(TObject(FAppendersDecorators[I].FLogAppender).ClassName, lLogItem,
|
||||||
|
TLogErrorReason.QueueFull, lAction);
|
||||||
|
case lAction of
|
||||||
|
TLogErrorAction.SkipNewest:
|
||||||
|
begin
|
||||||
|
// just skip the new message
|
||||||
|
end;
|
||||||
|
TLogErrorAction.DiscardOlder:
|
||||||
|
begin
|
||||||
|
// just remove the oldest log message
|
||||||
|
FAppendersDecorators[I].Queue.Dequeue.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lLogItem.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
wrTimeout, wrAbandoned, wrError:
|
||||||
|
begin
|
||||||
|
if Terminated then
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
wrIOCompletion:
|
||||||
|
begin
|
||||||
|
raise ELoggerPro.Create('Unhandled WaitResult: wrIOCompletition');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FAppendersDecorators.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerThread.SetEventsHandlers(const Value: TLoggerProEventsHandler);
|
||||||
|
begin
|
||||||
|
FEventsHandlers := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerThread.BuildAppendersDecorator: TAppenderAdaptersList;
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
Result := TAppenderAdaptersList.Create;
|
||||||
|
try
|
||||||
|
for I := 0 to FAppenders.Count - 1 do
|
||||||
|
begin
|
||||||
|
Result.Add(TAppenderAdapter.Create(FAppenders[I]));
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
Result.Free;
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TLogItem.Create(const aType: TLogType; const aMessage, aTag: string; const aTimeStamp: TDateTime; const aThreadID: TThreadID);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FType := aType;
|
||||||
|
FMessage := aMessage;
|
||||||
|
FTag := aTag;
|
||||||
|
FTimeStamp := aTimeStamp;
|
||||||
|
FThreadID := aThreadID;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLogItem.GetLogTypeAsString: string;
|
||||||
|
begin
|
||||||
|
case FType of
|
||||||
|
TLogType.Debug:
|
||||||
|
Exit('DEBUG');
|
||||||
|
TLogType.Info:
|
||||||
|
Exit('INFO');
|
||||||
|
TLogType.Warning:
|
||||||
|
Exit('WARNING');
|
||||||
|
TLogType.Error:
|
||||||
|
Exit('ERROR');
|
||||||
|
else
|
||||||
|
raise ELoggerPro.Create('Invalid LogType');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLoggerThread.TAppenderDecorator }
|
||||||
|
|
||||||
|
constructor TLoggerThread.TAppenderAdapter.Create(aAppender: ILogAppender);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FFailsCount := 0;
|
||||||
|
FLogAppender := aAppender;
|
||||||
|
FAppenderQueue := TAppenderQueue.Create(DefaultLoggerProAppenderQueueSize, 10);
|
||||||
|
FAppenderThread := TAppenderThread.Create(FLogAppender, FAppenderQueue);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TLoggerThread.TAppenderAdapter.Destroy;
|
||||||
|
begin
|
||||||
|
FAppenderQueue.DoShutDown;
|
||||||
|
FAppenderThread.Terminate;
|
||||||
|
FAppenderThread.Free;
|
||||||
|
FAppenderQueue.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerThread.TAppenderAdapter.GetLogLevel: TLogType;
|
||||||
|
begin
|
||||||
|
Result := FLogAppender.GetLogLevel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerThread.TAppenderAdapter.EnqueueLog(const aLogItem: TLogItem): Boolean;
|
||||||
|
var
|
||||||
|
lLogItem: TLogItem;
|
||||||
|
begin
|
||||||
|
lLogItem := aLogItem.Clone;
|
||||||
|
Result := FAppenderQueue.Enqueue(lLogItem); // = TWaitResult.wrSignaled;
|
||||||
|
if not Result then
|
||||||
|
begin
|
||||||
|
lLogItem.Free;
|
||||||
|
FFailsCount := FFailsCount + 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
FFailsCount := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLoggerProAppenderBase }
|
||||||
|
|
||||||
|
constructor TLoggerProAppenderBase.Create;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
Self.FEnabled := true;
|
||||||
|
Self.FLogLevel := TLogType.Debug;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProAppenderBase.GetLastErrorTimeStamp: TDateTime;
|
||||||
|
begin
|
||||||
|
Result := FLastErrorTimeStamp;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProAppenderBase.GetLogLevel: TLogType;
|
||||||
|
begin
|
||||||
|
Result := FLogLevel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProAppenderBase.SetLastErrorTimeStamp(const Value: TDateTime);
|
||||||
|
begin
|
||||||
|
FLastErrorTimeStamp := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProAppenderBase.SetLogLevel(const Value: TLogType);
|
||||||
|
begin
|
||||||
|
FLogLevel := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoggerProAppenderBase.TryToRestart(var Restarted: Boolean);
|
||||||
|
begin
|
||||||
|
Restarted := False;
|
||||||
|
// do nothing "smart" here... descendant must implement specific "restart" strategies
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TAppenderThread }
|
||||||
|
|
||||||
|
constructor TAppenderThread.Create(aLogAppender: ILogAppender; aAppenderQueue: TAppenderQueue);
|
||||||
|
begin
|
||||||
|
FLogAppender := aLogAppender;
|
||||||
|
FAppenderQueue := aAppenderQueue;
|
||||||
|
inherited Create(False);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAppenderThread.Execute;
|
||||||
|
var
|
||||||
|
lLogItem: TLogItem;
|
||||||
|
lRestarted: Boolean;
|
||||||
|
lStatus: TAppenderStatus;
|
||||||
|
lSetupFailCount: Integer;
|
||||||
|
begin
|
||||||
|
lSetupFailCount := 0;
|
||||||
|
lStatus := TAppenderStatus.BeforeSetup;
|
||||||
|
try
|
||||||
|
{ the appender tries to log all the messages before terminate... }
|
||||||
|
//dt
|
||||||
|
while (not Terminated) or (FAppenderQueue.QueueSize > 0) do
|
||||||
|
begin
|
||||||
|
{ ...but if the thread should be terminated, and the appender is failing,
|
||||||
|
its messages will be lost }
|
||||||
|
if Terminated and (lStatus = TAppenderStatus.WaitAfterFail) then
|
||||||
|
Break;
|
||||||
|
|
||||||
|
try
|
||||||
|
{ this state machine handles the status of the appender }
|
||||||
|
case lStatus of
|
||||||
|
TAppenderStatus.BeforeTearDown:
|
||||||
|
begin
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TAppenderStatus.BeforeSetup:
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
FLogAppender.Setup;
|
||||||
|
lStatus := TAppenderStatus.Running;
|
||||||
|
except
|
||||||
|
if lSetupFailCount = 10 then
|
||||||
|
begin
|
||||||
|
lStatus := TAppenderStatus.WaitAfterFail;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Inc(lSetupFailCount);
|
||||||
|
Sleep(1000); // wait before next setup call
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TAppenderStatus.ToRestart:
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
lRestarted := False;
|
||||||
|
FLogAppender.TryToRestart(lRestarted);
|
||||||
|
if lRestarted then
|
||||||
|
begin
|
||||||
|
lStatus := TAppenderStatus.Running;
|
||||||
|
FLogAppender.LastErrorTimeStamp := 0;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
lRestarted := False;
|
||||||
|
FLogAppender.LastErrorTimeStamp := now;
|
||||||
|
lStatus := TAppenderStatus.WaitAfterFail;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
lRestarted := False;
|
||||||
|
end;
|
||||||
|
Failing := not lRestarted;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TAppenderStatus.WaitAfterFail:
|
||||||
|
begin
|
||||||
|
Sleep(500);
|
||||||
|
if SecondsBetween(now, FLogAppender.LastErrorTimeStamp) >= 5 then
|
||||||
|
lStatus := TAppenderStatus.ToRestart;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TAppenderStatus.Running:
|
||||||
|
begin
|
||||||
|
if FAppenderQueue.Dequeue(lLogItem) = TWaitResult.wrSignaled then
|
||||||
|
begin
|
||||||
|
if lLogItem <> nil then
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
try
|
||||||
|
FLogAppender.WriteLog(lLogItem);
|
||||||
|
except
|
||||||
|
Failing := true;
|
||||||
|
FLogAppender.LastErrorTimeStamp := now;
|
||||||
|
lStatus := TAppenderStatus.WaitAfterFail;
|
||||||
|
Continue;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lLogItem.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
// something wrong... but we cannot stop the thread. Let's retry.
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FLogAppender.TearDown;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAppenderThread.SetFailing(const Value: Boolean);
|
||||||
|
begin
|
||||||
|
FFailing := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLoggerThread.TAppenderAdaptersList }
|
||||||
|
|
||||||
|
constructor TLoggerThread.TAppenderAdaptersList.Create;
|
||||||
|
begin
|
||||||
|
inherited Create(true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TLoggerProInterfacedObject }
|
||||||
|
|
||||||
|
function TLoggerProInterfacedObject._AddRef: Integer;
|
||||||
|
begin
|
||||||
|
Result := inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLoggerProInterfacedObject._Release: Integer;
|
||||||
|
begin
|
||||||
|
Result := inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
149
lib/loggerpro/README.md
Normal file
149
lib/loggerpro/README.md
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
# LoggerPro for Delphi
|
||||||
|
|
||||||
|
An modern and pluggable logging framework for Delphi
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
LoggerPro is compatibile with
|
||||||
|
- Delphi 11 Alexandria
|
||||||
|
- Delphi 10.4 Sydney
|
||||||
|
- Delphi 10.3 Rio
|
||||||
|
- Delphi 10.2 Tokyo (Added Linux compatibility)
|
||||||
|
- Delphi 10.1 Berlin
|
||||||
|
- Delphi 10 Seattle
|
||||||
|
- Delphi XE8
|
||||||
|
- Delphi XE7
|
||||||
|
- Delphi XE6
|
||||||
|
- Delphi XE5
|
||||||
|
- Delphi XE4
|
||||||
|
- Delphi XE3
|
||||||
|
- Delphi XE2
|
||||||
|
|
||||||
|
|
||||||
|
## What's new in 1.3.2
|
||||||
|
|
||||||
|
- Added support for Android API level 26 in mobile demo
|
||||||
|
- Added packages for Delphi 10.3 Rio, Delphi 10.2 Tokyo, Delphi 10.1 Berlin and Delphi 10.0 Seattle.
|
||||||
|
- Added packages for Delphi XE7 and Delphi XE8 (these packages do not contain appenders which uses `System.Net.HttpClient`)
|
||||||
|
- Added support for Linux in `TLoggerProFileAppender` (Thank you [charoit](https://github.com/charoit))
|
||||||
|
|
||||||
|
## What's new in 1.3.0
|
||||||
|
- Replace `TThreadedList<T>` with a custom implementation (`TThreadSafeQueue<T>`) because of a [bug](https://forums.embarcadero.com/thread.jspa?messageID=941762) and [this](https://quality.embarcadero.com/browse/RSP-19993) in `TMonitor`.
|
||||||
|
- `TThreadSafeQueue<T>` is not a drop-in replacement for the `TThreadedQueue<T>` but can be used in other projects if you are fighting with the same bug.
|
||||||
|
- `TVCLMemoLogAppender.Create` gots new parameter: `aClearOnStartup` which optionally clear the memo at the startup.
|
||||||
|
- Improvement to the `TLoggerProConsoleAppender` (Thanks to [Fulgan](https://github.com/Fulgan))
|
||||||
|
- Improvement to the `TLoggerProFileAppender`; now there is a `OnLogRow` callback that can be used to customize log row format.
|
||||||
|
- New overloaded `Log` methods. The `*Fmt` versions are deprecated and will be removed in a future version [ISSUE #17](https://github.com/danieleteti/loggerpro/issues/17)
|
||||||
|
- New [NSQ](https://nsq.io) appender (Thanks to [Fulgan](https://github.com/Fulgan))
|
||||||
|
- New logger filter decorator (Thanks to [Fulgan](https://github.com/Fulgan))
|
||||||
|
- New REST appender with support for extended information (samples for Windows and Android)
|
||||||
|
- Extended information are supported in Windows (fully) and Android (partially)
|
||||||
|
- In the sample folder is provided also the `RESTLogCollector`
|
||||||
|
- New [Elastic Search](https://www.elastic.co/products/elasticsearch) Log appender (Thanks to Salvatore Sparacino)
|
||||||
|
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
```delphi
|
||||||
|
program getting_started_console;
|
||||||
|
|
||||||
|
{$APPTYPE CONSOLE}
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils,
|
||||||
|
LoggerPro.GlobalLogger; //this is the global logger, it is perfect to understand the basic operation of LoggerPro.
|
||||||
|
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
//the global logger uses a TLoggerProFileAppender, so your logs will be written on a
|
||||||
|
//set of files with automatic rolling/rotating
|
||||||
|
|
||||||
|
Log.Debug('Debug message', 'main'); //TLoggerProFileAppender uses the "tag" to select a different log file
|
||||||
|
Log.Info('Info message', 'main');
|
||||||
|
Log.Warn('Warning message', 'main');
|
||||||
|
Log.Error('Error message', 'errors');
|
||||||
|
WriteLn('Check "getting_started_console.00.main.log" and "getting_started_console.00.errors.log" to see your logs');
|
||||||
|
ReadLn;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
Writeln(E.ClassName, ': ', E.Message);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
```
|
||||||
|
|
||||||
|
The most flexible/correct approach is not much complicated than the global logger one. Check how is simple to create a custom instance of logwriter
|
||||||
|
|
||||||
|
```delphi
|
||||||
|
program getting_started_console_appenders;
|
||||||
|
|
||||||
|
{$APPTYPE CONSOLE}
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.SysUtils,
|
||||||
|
LoggerPro, //LoggerPro core
|
||||||
|
LoggerPro.FileAppender, //File appender
|
||||||
|
LoggerPro.OutputDebugStringAppender; //OutputDebugString appender
|
||||||
|
|
||||||
|
var
|
||||||
|
Log: ILogWriter;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Log := BuildLogWriter([TLoggerProFileAppender.Create,
|
||||||
|
TLoggerProOutputDebugStringAppender.Create]);
|
||||||
|
|
||||||
|
try
|
||||||
|
Log.Debug('Debug message', 'main');
|
||||||
|
Log.Info('Info message', 'main');
|
||||||
|
Log.Warn('Warning message', 'main');
|
||||||
|
Log.Error('Error message', 'errors');
|
||||||
|
WriteLn('Check ');
|
||||||
|
WriteLn(' "getting_started_console.00.main.log"');
|
||||||
|
WriteLn(' "getting_started_console.00.errors.log"');
|
||||||
|
|
||||||
|
if DebugHook <> 0 then //inform the user where his/her logs are
|
||||||
|
begin
|
||||||
|
WriteLn('also, you logs have been sent to the current debugger, check the Delphi''s EventLog window to see them.');
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
WriteLn('..seems that no debugger is present. The logs can be seen using DebugView.');
|
||||||
|
WriteLn('Download it from here https://technet.microsoft.com/en-us/sysinternals/debugview.aspx');
|
||||||
|
WriteLn('Learn how to use http://tedgustaf.com/blog/2011/5/use-debugview-to-view-debug-output-from-asp-net-web-application/');
|
||||||
|
end;
|
||||||
|
ReadLn;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
WriteLn(E.ClassName, ': ', E.Message);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Built-in log appenders
|
||||||
|
The framework contains the following built-in log appenders
|
||||||
|
- File appender (`TLoggerProFileAppender`) (v1.0.0+)
|
||||||
|
- Console appender (`TLoggerProConsoleAppender`) (v1.0.0+)
|
||||||
|
- OutputDebugString appender (`TLoggerProOutputDebugStringAppender`) (v1.0.0+)
|
||||||
|
- VCL Memo appender (`TVCLMemoLogAppender`) (v1.0.0+)
|
||||||
|
- VCL ListView appender (`TVCLMemoLogAppender`) -- thanks to [https://github.com/he3p94uu](https://github.com/he3p94uu) (v1.3.0+)
|
||||||
|
- Redis Appender with LogsViewer(to aggregate logs from different instances on a single Redis instance) (v1.2.0+)
|
||||||
|
- Email appender (to send email as log, very useful for fatal errors) (v1.2.0+)
|
||||||
|
- SysLog appender [RFC 5424](https://tools.ietf.org/html/rfc5424) compliant -- thanks to [https://github.com/nurettin](https://github.com/nurettin) (v1.3.0+)
|
||||||
|
- [NSQ](https://nsq.io) appender (Thanks to [Fulgan](https://github.com/Fulgan)) (v1.3.0+)
|
||||||
|
- Decorator appender (Thanks to [Fulgan](https://github.com/Fulgan)) (v1.3.0+)
|
||||||
|
|
||||||
|
Next appenders in the development pipeline
|
||||||
|
- RESTful Appender (to send logs to a rest endpoint using a specific request format, so that you can implement log server in DelphiMVCFramework, PHP, Java, Python, Node etc)
|
||||||
|
- Twitter Appender (to send logs to a Twitter Account)
|
||||||
|
- Database appender (to send logs to a database table using FireDAC components -- Thank You Omar Bossoni)
|
||||||
|
|
||||||
|
The log writers and all the appenders are asycnhronous.
|
||||||
|
|
||||||
|
**Check the samples to see how to use each appender or even combine different appenders.**
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Documentation is available in the `docs` folder as HTML.
|
||||||
|
|
||||||
|
## Other
|
||||||
|
You can install [Delphinus package manager](https://github.com/Memnarch/Delphinus/wiki/Installing-Delphinus) and install LoggerPro as a package there. (Delphinus-Support)
|
234
lib/loggerpro/ThreadSafeQueueU.pas
Normal file
234
lib/loggerpro/ThreadSafeQueueU.pas
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
// *************************************************************************** }
|
||||||
|
//
|
||||||
|
// LoggerPro
|
||||||
|
//
|
||||||
|
// Copyright (c) 2010-2018 Daniele Teti
|
||||||
|
//
|
||||||
|
// https://github.com/danieleteti/loggerpro
|
||||||
|
//
|
||||||
|
// ***************************************************************************
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// ***************************************************************************
|
||||||
|
|
||||||
|
unit ThreadSafeQueueU;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
System.Generics.Collections,
|
||||||
|
System.Types,
|
||||||
|
System.SyncObjs, System.SysUtils;
|
||||||
|
|
||||||
|
type
|
||||||
|
TThreadSafeQueue<T: class> = class
|
||||||
|
private
|
||||||
|
fPopTimeout: UInt64;
|
||||||
|
fQueue: TObjectQueue<T>;
|
||||||
|
fCriticalSection: TCriticalSection;
|
||||||
|
// fSpinLock: TSpinLock;
|
||||||
|
fEvent: TEvent;
|
||||||
|
fMaxSize: UInt64;
|
||||||
|
fShutDown: Boolean;
|
||||||
|
public
|
||||||
|
function Enqueue(const Item: T): Boolean;
|
||||||
|
function Dequeue(out Item: T): TWaitResult; overload;
|
||||||
|
function Dequeue(out QueueSize: UInt64; out Item: T): TWaitResult; overload;
|
||||||
|
function Dequeue: T; overload;
|
||||||
|
function QueueSize: UInt64;
|
||||||
|
procedure DoShutDown;
|
||||||
|
constructor Create(const MaxSize: UInt64; const PopTimeout: UInt64); overload; virtual;
|
||||||
|
destructor Destroy; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TMREWObjectList<T: class> = class(TObject)
|
||||||
|
private
|
||||||
|
fList: TObjectList<T>;
|
||||||
|
fMREWSync: TMultiReadExclusiveWriteSynchronizer;
|
||||||
|
public
|
||||||
|
constructor Create; virtual;
|
||||||
|
destructor Destroy; override;
|
||||||
|
function BeginRead: TObjectList<T>;
|
||||||
|
procedure EndRead;
|
||||||
|
function BeginWrite: TObjectList<T>;
|
||||||
|
procedure EndWrite;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{ TThreadQueue<T> }
|
||||||
|
|
||||||
|
constructor TThreadSafeQueue<T>.Create(const MaxSize: UInt64; const PopTimeout: UInt64);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
fShutDown := False;
|
||||||
|
fMaxSize := MaxSize;
|
||||||
|
fQueue := TObjectQueue<T>.Create(False);
|
||||||
|
fCriticalSection := TCriticalSection.Create;
|
||||||
|
// fSpinLock := TMonitor.Create(False);
|
||||||
|
fEvent := TEvent.Create(nil, True, False, '');
|
||||||
|
fPopTimeout := PopTimeout;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TThreadSafeQueue<T>.Dequeue(out Item: T): TWaitResult;
|
||||||
|
var
|
||||||
|
lQueueSize: UInt64;
|
||||||
|
begin
|
||||||
|
Result := Dequeue(lQueueSize, Item);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TThreadSafeQueue<T>.Dequeue: T;
|
||||||
|
begin
|
||||||
|
Dequeue(Result);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TThreadSafeQueue<T>.Dequeue(out QueueSize: UInt64; out Item: T): TWaitResult;
|
||||||
|
var
|
||||||
|
lWaitResult: TWaitResult;
|
||||||
|
begin
|
||||||
|
if fShutDown then
|
||||||
|
Exit(TWaitResult.wrAbandoned);
|
||||||
|
lWaitResult := fEvent.WaitFor(fPopTimeout);
|
||||||
|
if lWaitResult = TWaitResult.wrSignaled then
|
||||||
|
begin
|
||||||
|
if fShutDown then
|
||||||
|
Exit(TWaitResult.wrAbandoned);
|
||||||
|
fCriticalSection.Enter;
|
||||||
|
try
|
||||||
|
QueueSize := fQueue.Count;
|
||||||
|
if QueueSize = 0 then
|
||||||
|
begin
|
||||||
|
fEvent.ResetEvent;
|
||||||
|
Exit(TWaitResult.wrTimeout);
|
||||||
|
end;
|
||||||
|
Item := fQueue.Extract;
|
||||||
|
Result := TWaitResult.wrSignaled;
|
||||||
|
finally
|
||||||
|
fCriticalSection.Leave;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Item := default (T);
|
||||||
|
Result := lWaitResult;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TThreadSafeQueue<T>.Destroy;
|
||||||
|
begin
|
||||||
|
DoShutDown;
|
||||||
|
fQueue.Free;
|
||||||
|
fCriticalSection.Free;
|
||||||
|
fEvent.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TThreadSafeQueue<T>.DoShutDown;
|
||||||
|
begin
|
||||||
|
fShutDown := True;
|
||||||
|
fCriticalSection.Enter;
|
||||||
|
try
|
||||||
|
while fQueue.Count > 0 do
|
||||||
|
begin
|
||||||
|
fQueue.Extract.Free;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
fCriticalSection.Leave;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TThreadSafeQueue<T>.Enqueue(const Item: T): Boolean;
|
||||||
|
const
|
||||||
|
cRetryCount: Byte = 20;
|
||||||
|
var
|
||||||
|
lCount: Integer;
|
||||||
|
begin
|
||||||
|
if fShutDown then
|
||||||
|
Exit(False);
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
lCount := 0;
|
||||||
|
while lCount < cRetryCount do
|
||||||
|
begin
|
||||||
|
Sleep(lCount * lCount * lCount * 10); //let's slow down the enqueue call using a cubic function
|
||||||
|
fCriticalSection.Enter;
|
||||||
|
try
|
||||||
|
if fQueue.Count >= fMaxSize then
|
||||||
|
begin
|
||||||
|
Inc(lCount);
|
||||||
|
Continue;
|
||||||
|
end;
|
||||||
|
fQueue.Enqueue(Item);
|
||||||
|
Result := True;
|
||||||
|
fEvent.SetEvent;
|
||||||
|
Break;
|
||||||
|
finally
|
||||||
|
fCriticalSection.Leave;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TThreadSafeQueue<T>.QueueSize: UInt64;
|
||||||
|
begin
|
||||||
|
fCriticalSection.Enter;
|
||||||
|
try
|
||||||
|
Result := fQueue.Count;
|
||||||
|
finally
|
||||||
|
fCriticalSection.Leave;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TMREWObjectList<T> }
|
||||||
|
|
||||||
|
function TMREWObjectList<T>.BeginWrite: TObjectList<T>;
|
||||||
|
begin
|
||||||
|
fMREWSync.BeginWrite;
|
||||||
|
Result := fList;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TMREWObjectList<T>.Create;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
fMREWSync := TMultiReadExclusiveWriteSynchronizer.Create;
|
||||||
|
fList := TObjectList<T>.Create(true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TMREWObjectList<T>.Destroy;
|
||||||
|
begin
|
||||||
|
fMREWSync.Free;
|
||||||
|
fList.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TMREWObjectList<T>.BeginRead: TObjectList<T>;
|
||||||
|
begin
|
||||||
|
fMREWSync.BeginRead;
|
||||||
|
Result := fList;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMREWObjectList<T>.EndRead;
|
||||||
|
begin
|
||||||
|
fMREWSync.EndRead;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMREWObjectList<T>.EndWrite;
|
||||||
|
begin
|
||||||
|
fMREWSync.EndWrite;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
2
lib/loggerpro/VERSION.TXT
Normal file
2
lib/loggerpro/VERSION.TXT
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
VERSION 1_3_3
|
||||||
|
BUILD DATETIME 2020-05-14T19:08:39.337540
|
2
lib/loggerpro/clean.bat
Normal file
2
lib/loggerpro/clean.bat
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
del /s *.~*;*.exe;*.cfg;*.dof;*.gdb;*.dcu;*.local;*.identcache;*.dSYM;*.o;*.rsm;*.so;*.apk;*.log;*.tvsconfig;*.map
|
||||||
|
exit
|
84
lib/loggerpro/docs/AllClasses.html
Normal file
84
lib/loggerpro/docs/AllClasses.html
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<!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>
|
19
lib/loggerpro/docs/AllConstants.html
Normal file
19
lib/loggerpro/docs/AllConstants.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<!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>
|
39
lib/loggerpro/docs/AllFunctions.html
Normal file
39
lib/loggerpro/docs/AllFunctions.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<!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>
|
144
lib/loggerpro/docs/AllIdentifiers.html
Normal file
144
lib/loggerpro/docs/AllIdentifiers.html
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
<!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>
|
59
lib/loggerpro/docs/AllTypes.html
Normal file
59
lib/loggerpro/docs/AllTypes.html
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<!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>
|
47
lib/loggerpro/docs/AllUnits.html
Normal file
47
lib/loggerpro/docs/AllUnits.html
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<!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>
|
34
lib/loggerpro/docs/AllVariables.html
Normal file
34
lib/loggerpro/docs/AllVariables.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<!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>
|
37
lib/loggerpro/docs/ClassHierarchy.html
Normal file
37
lib/loggerpro/docs/ClassHierarchy.html
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<!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>
|
@ -0,0 +1,92 @@
|
|||||||
|
<!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>
|
34
lib/loggerpro/docs/LoggerPro.ConsoleAppender.html
Normal file
34
lib/loggerpro/docs/LoggerPro.ConsoleAppender.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<!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>
|
29
lib/loggerpro/docs/LoggerPro.ELoggerPro.html
Normal file
29
lib/loggerpro/docs/LoggerPro.ELoggerPro.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<!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>
|
@ -0,0 +1,148 @@
|
|||||||
|
<!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>
|
87
lib/loggerpro/docs/LoggerPro.FileAppender.html
Normal file
87
lib/loggerpro/docs/LoggerPro.FileAppender.html
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<!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>
|
64
lib/loggerpro/docs/LoggerPro.GlobalLogger.html
Normal file
64
lib/loggerpro/docs/LoggerPro.GlobalLogger.html
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<!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>
|
142
lib/loggerpro/docs/LoggerPro.ILogAppender.html
Normal file
142
lib/loggerpro/docs/LoggerPro.ILogAppender.html
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<!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>
|
212
lib/loggerpro/docs/LoggerPro.ILogWriter.html
Normal file
212
lib/loggerpro/docs/LoggerPro.ILogWriter.html
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
<!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>
|
@ -0,0 +1,88 @@
|
|||||||
|
<!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>
|
34
lib/loggerpro/docs/LoggerPro.OutputDebugStringAppender.html
Normal file
34
lib/loggerpro/docs/LoggerPro.OutputDebugStringAppender.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<!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>
|
174
lib/loggerpro/docs/LoggerPro.TLogItem.html
Normal file
174
lib/loggerpro/docs/LoggerPro.TLogItem.html
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
<!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>
|
215
lib/loggerpro/docs/LoggerPro.TLogWriter.html
Normal file
215
lib/loggerpro/docs/LoggerPro.TLogWriter.html
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
<!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>
|
93
lib/loggerpro/docs/LoggerPro.TLogger.html
Normal file
93
lib/loggerpro/docs/LoggerPro.TLogger.html
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<!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>
|
47
lib/loggerpro/docs/LoggerPro.TLoggerProEventsHandler.html
Normal file
47
lib/loggerpro/docs/LoggerPro.TLoggerProEventsHandler.html
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<!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>
|
89
lib/loggerpro/docs/LoggerPro.TLoggerThread.html
Normal file
89
lib/loggerpro/docs/LoggerPro.TLoggerThread.html
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<!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>
|
@ -0,0 +1,83 @@
|
|||||||
|
<!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>
|
@ -0,0 +1,83 @@
|
|||||||
|
<!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>
|
44
lib/loggerpro/docs/LoggerPro.VCLAppenders.html
Normal file
44
lib/loggerpro/docs/LoggerPro.VCLAppenders.html
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<!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>
|
@ -0,0 +1,86 @@
|
|||||||
|
<!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>
|
34
lib/loggerpro/docs/LoggerPro.VCLMemoAppender.html
Normal file
34
lib/loggerpro/docs/LoggerPro.VCLMemoAppender.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<!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>
|
230
lib/loggerpro/docs/LoggerPro.html
Normal file
230
lib/loggerpro/docs/LoggerPro.html
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
<!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>
|
BIN
lib/loggerpro/docs/automated.gif
Normal file
BIN
lib/loggerpro/docs/automated.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 B |
47
lib/loggerpro/docs/index.html
Normal file
47
lib/loggerpro/docs/index.html
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<!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>
|
55
lib/loggerpro/docs/legend.html
Normal file
55
lib/loggerpro/docs/legend.html
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<!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>
|
193
lib/loggerpro/docs/pasdoc.css
Normal file
193
lib/loggerpro/docs/pasdoc.css
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
/*
|
||||||
|
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; }
|
BIN
lib/loggerpro/docs/private.gif
Normal file
BIN
lib/loggerpro/docs/private.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 B |
BIN
lib/loggerpro/docs/protected.gif
Normal file
BIN
lib/loggerpro/docs/protected.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 B |
BIN
lib/loggerpro/docs/public.gif
Normal file
BIN
lib/loggerpro/docs/public.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 B |
BIN
lib/loggerpro/docs/published.gif
Normal file
BIN
lib/loggerpro/docs/published.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 B |
125
lib/loggerpro/dodo.py
Normal file
125
lib/loggerpro/dodo.py
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
|
|
BIN
lib/loggerpro/loggerpro_logo.png
Normal file
BIN
lib/loggerpro/loggerpro_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
54
lib/loggerpro/packages/d100/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d100/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '100'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
996
lib/loggerpro/packages/d100/loggerproRT.dproj
Normal file
996
lib/loggerpro/packages/d100/loggerproRT.dproj
Normal file
@ -0,0 +1,996 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>18.8</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||||
|
<Base_Android64>true</Base_Android64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||||
|
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>100</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.ElasticSearchAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.NSQAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.RESTAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.OutputDebugStringAppender.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT100.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\xml</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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Colors">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon24">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Strings">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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_Launch1024x768">
|
||||||
|
<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_Launch1536x2048">
|
||||||
|
<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_Launch1668">
|
||||||
|
<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_Launch1668x2388">
|
||||||
|
<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_Launch2048x1536">
|
||||||
|
<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_Launch2048x2732">
|
||||||
|
<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_Launch2224">
|
||||||
|
<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_Launch2388x1668">
|
||||||
|
<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_Launch2732x2048">
|
||||||
|
<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="iPad_Launch768x1024">
|
||||||
|
<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_Launch1125">
|
||||||
|
<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_Launch1136x640">
|
||||||
|
<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_Launch1242">
|
||||||
|
<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_Launch1242x2688">
|
||||||
|
<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_Launch1334">
|
||||||
|
<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_Launch1792">
|
||||||
|
<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_Launch2208">
|
||||||
|
<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_Launch2436">
|
||||||
|
<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_Launch2688x1242">
|
||||||
|
<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="iPhone_Launch750">
|
||||||
|
<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_Launch828">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Android64">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
54
lib/loggerpro/packages/d101/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d101/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '101'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
997
lib/loggerpro/packages/d101/loggerproRT.dproj
Normal file
997
lib/loggerpro/packages/d101/loggerproRT.dproj
Normal file
@ -0,0 +1,997 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>18.8</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||||
|
<Base_Android64>true</Base_Android64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||||
|
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>101</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.ElasticSearchAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.NSQAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.RESTAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.OutputDebugStringAppender.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\LockBoxFMXDD250.bpl">TurboPack LockBox Delphi FMX designtime package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\DataExplorerDBXPluginEnt260.bpl">DBExpress Enterprise Data Explorer Integration</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="C:\Program Files (x86)\FastReports\LibD26\dclfrxtee26.bpl">FastReport 6.0 Tee Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT101.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\xml</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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Colors">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon24">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Strings">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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_Launch1024x768">
|
||||||
|
<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_Launch1536x2048">
|
||||||
|
<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_Launch1668">
|
||||||
|
<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_Launch1668x2388">
|
||||||
|
<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_Launch2048x1536">
|
||||||
|
<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_Launch2048x2732">
|
||||||
|
<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_Launch2224">
|
||||||
|
<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_Launch2388x1668">
|
||||||
|
<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_Launch2732x2048">
|
||||||
|
<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="iPad_Launch768x1024">
|
||||||
|
<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_Launch1125">
|
||||||
|
<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_Launch1136x640">
|
||||||
|
<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_Launch1242">
|
||||||
|
<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_Launch1242x2688">
|
||||||
|
<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_Launch1334">
|
||||||
|
<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_Launch1792">
|
||||||
|
<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_Launch2208">
|
||||||
|
<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_Launch2436">
|
||||||
|
<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_Launch2688x1242">
|
||||||
|
<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="iPhone_Launch750">
|
||||||
|
<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_Launch828">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Android64">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
54
lib/loggerpro/packages/d102/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d102/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '102'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
996
lib/loggerpro/packages/d102/loggerproRT.dproj
Normal file
996
lib/loggerpro/packages/d102/loggerproRT.dproj
Normal file
@ -0,0 +1,996 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>18.8</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||||
|
<Base_Android64>true</Base_Android64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||||
|
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>102</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.ElasticSearchAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.NSQAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.RESTAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.OutputDebugStringAppender.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<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 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>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT102.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\xml</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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Colors">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon24">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Strings">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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_Launch1024x768">
|
||||||
|
<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_Launch1536x2048">
|
||||||
|
<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_Launch1668">
|
||||||
|
<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_Launch1668x2388">
|
||||||
|
<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_Launch2048x1536">
|
||||||
|
<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_Launch2048x2732">
|
||||||
|
<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_Launch2224">
|
||||||
|
<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_Launch2388x1668">
|
||||||
|
<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_Launch2732x2048">
|
||||||
|
<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="iPad_Launch768x1024">
|
||||||
|
<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_Launch1125">
|
||||||
|
<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_Launch1136x640">
|
||||||
|
<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_Launch1242">
|
||||||
|
<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_Launch1242x2688">
|
||||||
|
<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_Launch1334">
|
||||||
|
<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_Launch1792">
|
||||||
|
<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_Launch2208">
|
||||||
|
<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_Launch2436">
|
||||||
|
<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_Launch2688x1242">
|
||||||
|
<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="iPhone_Launch750">
|
||||||
|
<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_Launch828">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Android64">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
54
lib/loggerpro/packages/d103/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d103/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '103'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
574
lib/loggerpro/packages/d103/loggerproRT.dproj
Normal file
574
lib/loggerpro/packages/d103/loggerproRT.dproj
Normal file
@ -0,0 +1,574 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>18.6</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>103</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.ElasticSearchAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.NSQAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.RESTAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\LockBoxFMXDD250.bpl">TurboPack LockBox Delphi FMX designtime package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\DataExplorerDBXPluginEnt260.bpl">DBExpress Enterprise Data Explorer Integration</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="C:\Program Files (x86)\FastReports\LibD26\dclfrxtee26.bpl">FastReport 6.0 Tee Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</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="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="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
54
lib/loggerpro/packages/d104/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d104/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '104'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
819
lib/loggerpro/packages/d104/loggerproRT.dproj
Normal file
819
lib/loggerpro/packages/d104/loggerproRT.dproj
Normal file
@ -0,0 +1,819 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>19.0</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||||
|
<Base_Android64>true</Base_Android64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||||
|
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>104</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.ElasticSearchAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.NSQAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.RESTAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.OutputDebugStringAppender.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRT.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\xml</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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Colors">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon24">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Strings">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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_Launch2x">
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<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="iPad_LaunchDark2x">
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch2x">
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<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_Launch3x">
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<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="iPhone_LaunchDark2x">
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_LaunchDark3x">
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectAndroidManifest">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectiOSLaunchScreen"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Android64">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
54
lib/loggerpro/packages/d110/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d110/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '110'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
1001
lib/loggerpro/packages/d110/loggerproRT.dproj
Normal file
1001
lib/loggerpro/packages/d110/loggerproRT.dproj
Normal file
File diff suppressed because it is too large
Load Diff
54
lib/loggerpro/packages/d111/loggerproRT.dpk
Normal file
54
lib/loggerpro/packages/d111/loggerproRT.dpk
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX '111'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.ElasticSearchAppender in '..\..\LoggerPro.ElasticSearchAppender.pas',
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro.NSQAppender in '..\..\LoggerPro.NSQAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.RESTAppender in '..\..\LoggerPro.RESTAppender.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
1000
lib/loggerpro/packages/d111/loggerproRT.dproj
Normal file
1000
lib/loggerpro/packages/d111/loggerproRT.dproj
Normal file
File diff suppressed because it is too large
Load Diff
51
lib/loggerpro/packages/dxe7/loggerproRT.dpk
Normal file
51
lib/loggerpro/packages/dxe7/loggerproRT.dpk
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX 'xe7'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
993
lib/loggerpro/packages/dxe7/loggerproRT.dproj
Normal file
993
lib/loggerpro/packages/dxe7/loggerproRT.dproj
Normal file
@ -0,0 +1,993 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>18.8</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||||
|
<Base_Android64>true</Base_Android64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||||
|
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>xe7</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.OutputDebugStringAppender.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRTxe7.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\xml</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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Colors">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon24">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Strings">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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_Launch1024x768">
|
||||||
|
<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_Launch1536x2048">
|
||||||
|
<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_Launch1668">
|
||||||
|
<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_Launch1668x2388">
|
||||||
|
<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_Launch2048x1536">
|
||||||
|
<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_Launch2048x2732">
|
||||||
|
<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_Launch2224">
|
||||||
|
<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_Launch2388x1668">
|
||||||
|
<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_Launch2732x2048">
|
||||||
|
<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="iPad_Launch768x1024">
|
||||||
|
<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_Launch1125">
|
||||||
|
<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_Launch1136x640">
|
||||||
|
<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_Launch1242">
|
||||||
|
<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_Launch1242x2688">
|
||||||
|
<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_Launch1334">
|
||||||
|
<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_Launch1792">
|
||||||
|
<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_Launch2208">
|
||||||
|
<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_Launch2436">
|
||||||
|
<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_Launch2688x1242">
|
||||||
|
<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="iPhone_Launch750">
|
||||||
|
<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_Launch828">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Android64">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
51
lib/loggerpro/packages/dxe8/loggerproRT.dpk
Normal file
51
lib/loggerpro/packages/dxe8/loggerproRT.dpk
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package loggerproRT;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
|
||||||
|
{$ALIGN 8}
|
||||||
|
{$ASSERTIONS ON}
|
||||||
|
{$BOOLEVAL OFF}
|
||||||
|
{$DEBUGINFO OFF}
|
||||||
|
{$EXTENDEDSYNTAX ON}
|
||||||
|
{$IMPORTEDDATA ON}
|
||||||
|
{$IOCHECKS ON}
|
||||||
|
{$LOCALSYMBOLS ON}
|
||||||
|
{$LONGSTRINGS ON}
|
||||||
|
{$OPENSTRINGS ON}
|
||||||
|
{$OPTIMIZATION OFF}
|
||||||
|
{$OVERFLOWCHECKS OFF}
|
||||||
|
{$RANGECHECKS OFF}
|
||||||
|
{$REFERENCEINFO ON}
|
||||||
|
{$SAFEDIVIDE OFF}
|
||||||
|
{$STACKFRAMES ON}
|
||||||
|
{$TYPEDADDRESS OFF}
|
||||||
|
{$VARSTRINGCHECKS ON}
|
||||||
|
{$WRITEABLECONST OFF}
|
||||||
|
{$MINENUMSIZE 1}
|
||||||
|
{$IMAGEBASE $400000}
|
||||||
|
{$DEFINE DEBUG}
|
||||||
|
{$ENDIF IMPLICITBUILDING}
|
||||||
|
{$DESCRIPTION 'LoggerPro'}
|
||||||
|
{$LIBSUFFIX 'xe8'}
|
||||||
|
{$RUNONLY}
|
||||||
|
{$IMPLICITBUILD ON}
|
||||||
|
|
||||||
|
requires
|
||||||
|
rtl,
|
||||||
|
IndySystem,
|
||||||
|
IndyProtocols,
|
||||||
|
IndyCore;
|
||||||
|
|
||||||
|
contains
|
||||||
|
LoggerPro.EMailAppender in '..\..\LoggerPro.EMailAppender.pas',
|
||||||
|
LoggerPro.FileAppender in '..\..\LoggerPro.FileAppender.pas',
|
||||||
|
LoggerPro.GlobalLogger in '..\..\LoggerPro.GlobalLogger.pas',
|
||||||
|
LoggerPro.MemoryAppender in '..\..\LoggerPro.MemoryAppender.pas',
|
||||||
|
LoggerPro in '..\..\LoggerPro.pas',
|
||||||
|
LoggerPro.Proxy in '..\..\LoggerPro.Proxy.pas',
|
||||||
|
LoggerPro.UDPSyslogAppender in '..\..\LoggerPro.UDPSyslogAppender.pas',
|
||||||
|
LoggerPro.Utils in '..\..\LoggerPro.Utils.pas',
|
||||||
|
ThreadSafeQueueU in '..\..\ThreadSafeQueueU.pas',
|
||||||
|
LoggerPro.OutputDebugStringAppender in '..\..\LoggerPro.OutputDebugStringAppender.pas';
|
||||||
|
|
||||||
|
end.
|
993
lib/loggerpro/packages/dxe8/loggerproRT.dproj
Normal file
993
lib/loggerpro/packages/dxe8/loggerproRT.dproj
Normal file
@ -0,0 +1,993 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1611FBE6-5266-48FE-BDF5-E46EEAA922BE}</ProjectGuid>
|
||||||
|
<MainSource>loggerproRT.dpk</MainSource>
|
||||||
|
<ProjectVersion>18.8</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Package</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||||
|
<Base_Android64>true</Base_Android64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<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="'$(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="'$(Base)'!=''">
|
||||||
|
<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>
|
||||||
|
<GenDll>true</GenDll>
|
||||||
|
<GenPackage>true</GenPackage>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
|
<SanitizedProjectName>loggerproRT</SanitizedProjectName>
|
||||||
|
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||||
|
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</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)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_Description>LoggerPro</DCC_Description>
|
||||||
|
<DllSuffix>xe8</DllSuffix>
|
||||||
|
</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>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="rtl.dcp"/>
|
||||||
|
<DCCReference Include="IndySystem.dcp"/>
|
||||||
|
<DCCReference Include="IndyProtocols.dcp"/>
|
||||||
|
<DCCReference Include="IndyCore.dcp"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.EMailAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.FileAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.GlobalLogger.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.MemoryAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Proxy.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.UDPSyslogAppender.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.Utils.pas"/>
|
||||||
|
<DCCReference Include="..\..\ThreadSafeQueueU.pas"/>
|
||||||
|
<DCCReference Include="..\..\LoggerPro.OutputDebugStringAppender.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>Package</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">loggerproRT.dpk</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\loggerproRTxe8.bpl" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>loggerproRT.bpl</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\xml</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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Colors">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon24">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_NotificationIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_Strings">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<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">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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_Launch1024x768">
|
||||||
|
<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_Launch1536x2048">
|
||||||
|
<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_Launch1668">
|
||||||
|
<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_Launch1668x2388">
|
||||||
|
<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_Launch2048x1536">
|
||||||
|
<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_Launch2048x2732">
|
||||||
|
<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_Launch2224">
|
||||||
|
<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_Launch2388x1668">
|
||||||
|
<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_Launch2732x2048">
|
||||||
|
<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="iPad_Launch768x1024">
|
||||||
|
<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_Launch1125">
|
||||||
|
<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_Launch1136x640">
|
||||||
|
<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_Launch1242">
|
||||||
|
<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_Launch1242x2688">
|
||||||
|
<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_Launch1334">
|
||||||
|
<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_Launch1792">
|
||||||
|
<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_Launch2208">
|
||||||
|
<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_Launch2436">
|
||||||
|
<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_Launch2688x1242">
|
||||||
|
<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="iPhone_Launch750">
|
||||||
|
<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_Launch828">
|
||||||
|
<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>
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<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"/>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||||
|
<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="ProjectOSXDebug"/>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<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="Android64">
|
||||||
|
<RemoteDir>library\lib\arm64-v8a</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">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOutput_Android32">
|
||||||
|
<Platform Name="Android64">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</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="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Android64">False</Platform>
|
||||||
|
<Platform value="Linux64">False</Platform>
|
||||||
|
<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>
|
78
lib/loggerpro/pasdoc.pds
Normal file
78
lib/loggerpro/pasdoc.pds
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
[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
|
61
lib/loggerpro/samples/01_global_logger/MainFormU.dfm
Normal file
61
lib/loggerpro/samples/01_global_logger/MainFormU.dfm
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
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
|
93
lib/loggerpro/samples/01_global_logger/MainFormU.pas
Normal file
93
lib/loggerpro/samples/01_global_logger/MainFormU.pas
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
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.
|
14
lib/loggerpro/samples/01_global_logger/global_logger.dpr
Normal file
14
lib/loggerpro/samples/01_global_logger/global_logger.dpr
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
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.
|
1026
lib/loggerpro/samples/01_global_logger/global_logger.dproj
Normal file
1026
lib/loggerpro/samples/01_global_logger/global_logger.dproj
Normal file
File diff suppressed because it is too large
Load Diff
60
lib/loggerpro/samples/02_file_appender/LoggerProConfig.pas
Normal file
60
lib/loggerpro/samples/02_file_appender/LoggerProConfig.pas
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
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.
|
15
lib/loggerpro/samples/02_file_appender/file_appender.dpr
Normal file
15
lib/loggerpro/samples/02_file_appender/file_appender.dpr
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
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.
|
1026
lib/loggerpro/samples/02_file_appender/file_appender.dproj
Normal file
1026
lib/loggerpro/samples/02_file_appender/file_appender.dproj
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
|
|||||||
|
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.
|
@ -0,0 +1,16 @@
|
|||||||
|
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.
|
1020
lib/loggerpro/samples/03_console_appender/console_appender.dproj
Normal file
1020
lib/loggerpro/samples/03_console_appender/console_appender.dproj
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,27 @@
|
|||||||
|
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.
|
@ -0,0 +1,15 @@
|
|||||||
|
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
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user