Difference between revisions of "Unit Logging"

From Ultibo.org
Jump to: navigation, search
Line 333: Line 333:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 345: Line 345:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 360: Line 360:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 372: Line 372:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 384: Line 384:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 396: Line 396:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 408: Line 408:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 420: Line 420:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 432: Line 432:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! Return
 
| Pointer to new Logging device entry or nil if Logging device could not be created
 
| Pointer to new Logging device entry or nil if Logging device could not be created
 
|-
 
|-
Line 444: Line 444:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Size'''
+
! Size
 
| Size in bytes to allocate for new Logging (Including the Logging entry)
 
| Size in bytes to allocate for new Logging (Including the Logging entry)
 
|-
 
|-
! '''Return'''
+
! Return
 
| Pointer to new Logging device entry or nil if Logging device could not be created
 
| Pointer to new Logging device entry or nil if Logging device could not be created
 
|-
 
|-
Line 459: Line 459:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 471: Line 471:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 483: Line 483:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 495: Line 495:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 507: Line 507:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 519: Line 519:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 531: Line 531:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 543: Line 543:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 555: Line 555:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 567: Line 567:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 582: Line 582:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 594: Line 594:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 606: Line 606:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 621: Line 621:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Not intended to be called directly by applications
 
| Not intended to be called directly by applications
 
|-
 
|-
Line 633: Line 633:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Not intended to be called directly by applications
 
| Not intended to be called directly by applications
 
|-
 
|-
Line 648: Line 648:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 660: Line 660:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 675: Line 675:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 687: Line 687:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 699: Line 699:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 711: Line 711:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 723: Line 723:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Logging'''
+
! Logging
 
| The logging device to redirect output to (or nil to stop redirection)
 
| The logging device to redirect output to (or nil to stop redirection)
 
|-
 
|-
! '''Return'''
+
! Return
 
| True if completed successfully or False if an error occurred
 
| True if completed successfully or False if an error occurred
 
|-
 
|-
! '''Note'''
+
! Note
| Redirects the output of the text files Output, ErrOutput, StdOut and StdErr which also redirects the output of Write, WriteLn and the standard C library
+
| Redirects the output of the text files Output, ErrOutput, StdOut and StdErr which also redirects the output of Write, WriteLn and the standard C library.
 
|-
 
|-
 
|}
 
|}
Line 741: Line 741:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 753: Line 753:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 765: Line 765:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 777: Line 777:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 789: Line 789:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Revision as of 04:28, 20 April 2018

Return to Unit Reference


Description


Ultibo Logging interface unit

To be documented

Constants



Logging specific constants LOGGING_*
LOGGING_NAME_PREFIX = 'Logging'; Name prefix for Logging Devices
 
LOGGING_THREAD_NAME = 'Logging'; Thread name for Logging threads
LOGGING_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; Thread priority for Logging threads


Logging device type LOGGING_TYPE_*
LOGGING_TYPE_NONE = 0;  
LOGGING_TYPE_CONSOLE = 1;  
LOGGING_TYPE_FILE = 2;  
LOGGING_TYPE_SYSLOG = 3;  
LOGGING_TYPE_SERIAL = 4;  


Logging device state LOGGING_STATE_*
LOGGING_STATE_DISABLED = 0;  
LOGGING_STATE_ENABLED = 1;  


Logging device flag LOGGING_FLAG_*
LOGGING_FLAG_NONE = $00000000;  


Console logging CONSOLE_LOGGING_*
CONSOLE_LOGGING_DESCRIPTION = 'Console Logging';  


Type definitions



Logging entry

PLoggingEntry = ^TLoggingEntry;

TLoggingEntry = record

Note: Overlaid on TMessage to avoid memory allocation on each output
Data:String; TMessage.Msg:LongWord
Reserved1:LongInt; TMessage.wParam:LongInt
Reserved2:LongInt; TMessage.lParam:LongInt
Reserved3:LongWord; TMessage.Time:LongWord

Logging entry ex

PLoggingEntryEx = ^TLoggingEntryEx;

TLoggingEntryEx = record

Note: Overlaid on TMessage to avoid memory allocation on each output
Content:String; TMessage.Msg:LongWord
Tag:String; TMessage.wParam:LongInt
Severity:LongInt; TMessage.lParam:LongInt
Facility:LongWord; TMessage.Time:LongWord

Logging enumeration callback

TLoggingEnumerate = function(Logging:PLoggingDevice; Data:Pointer):LongWord;

Logging notification callback

TLoggingNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Logging device start

TLoggingDeviceStart = function(Logging:PLoggingDevice):LongWord;

Logging device stop

TLoggingDeviceStop = function(Logging:PLoggingDevice):LongWord;

Logging device output

TLoggingDeviceOutput = function(Logging:PLoggingDevice; const Data:String):LongWord;

Logging device output ex

TLoggingDeviceOutputEx = function(Logging:PLoggingDevice; Facility,Severity:LongWord; const Tag,Content:String):LongWord; Syslog compatible output

Logging device get target

TLoggingDeviceGetTarget = function(Logging:PLoggingDevice):String;

Logging device set target

TLoggingDeviceSetTarget = function(Logging:PLoggingDevice; const Target:String):LongWord;

Logging device

PLoggingDevice = ^TLoggingDevice;

TLoggingDevice = record

Device Properties
Device:TDevice; The Device entry for this Logging device
Logging Properties
LoggingId:LongWord; Unique Id of this Logging device in the Logging device table
LoggingState:LongWord; Logging device state (eg LOGGING_STATE_ENABLED)
DeviceStart:TLoggingDeviceStart; A device specific DeviceStart method implementing a standard logging device interface (Or nil if the default method is suitable)
DeviceStop:TLoggingDeviceStop; A device specific DeviceStop method implementing a standard logging device interface (Or nil if the default method is suitable)
DeviceOutput:TLoggingDeviceOutput; A device specific DeviceOutput method implementing a standard logging device interface
DeviceOutputEx:TLoggingDeviceOutputEx; A device specific DeviceOutputEx method implementing a standard logging device interface
DeviceGetTarget:TLoggingDeviceGetTarget; A device specific DeviceGetTarget method implementing a standard logging device interface (Or nil if the default method is suitable)
DeviceSetTarget:TLoggingDeviceSetTarget; A device specific DeviceSetTarget method implementing a standard logging device interface (Or nil if the default method is suitable)
Statistics Properties
OutputCount:LongWord;  
Driver Properties
Lock:TMutexHandle; Device lock
Handle:THandle; Device output handle
Target:String; Device output target
Default:LongBool; Device can be the default logging device
Internal Properties
Prev:PLoggingDevice; Previous entry in Logging device table
Next:PLoggingDevice; Next entry in Logging device table

Console logging

PConsoleLogging = ^TConsoleLogging;

TConsoleLogging = record

Logging Properties
Logging:TLoggingDevice;  
Console Properties
Console:PConsoleDevice;  
Window:TWindowHandle;  


Public variables


None defined

Function declarations



Initialization functions

procedure LoggingInit;
Description: To be documented
Note None documented


function LoggingExecute(Parameter:Pointer):PtrInt;
Description: To be documented
Note None documented


Logging functions

function LoggingDeviceStart(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note None documented


function LoggingDeviceStop(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note None documented


function LoggingDeviceOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Description: To be documented
Note None documented


function LoggingDeviceOutputEx(Logging:PLoggingDevice; Facility,Severity:LongWord; const Tag,Content:String):LongWord;
Description: To be documented
Note None documented


function LoggingDeviceGetTarget(Logging:PLoggingDevice):String;
Description: To be documented
Note None documented


function LoggingDeviceSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;
Description: To be documented
Note None documented


function LoggingDeviceCreate(Default:Boolean):PLoggingDevice;
Description: Create a new Logging device entry
Return Pointer to new Logging device entry or nil if Logging device could not be created


function LoggingDeviceCreateEx(Size:LongWord; Default:Boolean):PLoggingDevice;
Description: Create a new Logging device entry
Size Size in bytes to allocate for new Logging (Including the Logging entry)
Return Pointer to new Logging device entry or nil if Logging device could not be created


function LoggingDeviceDestroy(Logging:PLoggingDevice):LongWord;
Description: Destroy an existing Logging device entry
Note None documented


function LoggingDeviceRegister(Logging:PLoggingDevice):LongWord;
Description: Register a new Logging device in the Logging table
Note None documented


function LoggingDeviceDeregister(Logging:PLoggingDevice):LongWord;
Description: Deregister a Logging device from the Logging table
Note None documented


function LoggingDeviceFind(LoggingId:LongWord):PLoggingDevice;
Description: To be documented
Note None documented


function LoggingDeviceFindByType(LoggingType:LongWord):PLoggingDevice;
Description: To be documented
Note None documented


function LoggingDeviceFindByDevice(Device:PDevice):PLoggingDevice;
Description: To be documented
Note None documented


function LoggingDeviceFindByName(const Name:String):PLoggingDevice; inline;
Description: To be documented
Note None documented


function LoggingDeviceFindByDescription(const Description:String):PLoggingDevice; inline;
Description: To be documented
Note None documented


function LoggingDeviceEnumerate(Callback:TLoggingEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function LoggingDeviceNotification(Logging:PLoggingDevice; Callback:TLoggingNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note None documented


Console logging functions

function ConsoleLoggingStart(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note None documented


function ConsoleLoggingStop(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note None documented


function ConsoleLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Description: To be documented
Note None documented


RTL text IO functions

function SysTextIOWriteChar(ACh:Char; AUserData:Pointer):Boolean;
Description: Handler for platform TextIOWriteChar function
Note Not intended to be called directly by applications


function SysTextIOWriteBuffer(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;
Description: Handler for platform TextIOWriteBuffer function
Note Not intended to be called directly by applications


RTL logging functions

procedure SysLoggingOutput(const AText:String);
Description: To be documented
Note None documented


procedure SysLoggingOutputEx(AFacility,ASeverity:LongWord; const ATag,AContent:String);
Description: To be documented
Note None documented


Logging helper functions

function LoggingDeviceGetCount:LongWord; inline;
Description: Get the current logging device count
Note None documented


function LoggingDeviceGetDefault:PLoggingDevice; inline;
Description: Get the current default logging device
Note None documented


function LoggingDeviceSetDefault(Logging:PLoggingDevice):LongWord;
Description: Set the current default logging device
Note None documented


function LoggingDeviceCheck(Logging:PLoggingDevice):PLoggingDevice;
Description: Check if the supplied Logging device is in the Logging table
Note None documented


function LoggingDeviceRedirectOutput(Logging:PLoggingDevice):Boolean;
Description: Redirect standard output to the logging device specified by Logging
Logging The logging device to redirect output to (or nil to stop redirection)
Return True if completed successfully or False if an error occurred
Note Redirects the output of the text files Output, ErrOutput, StdOut and StdErr which also redirects the output of Write, WriteLn and the standard C library.


function LoggingGetMessageslotFlags:LongWord;
Description: Get the lock flags for the logging messageslot
Note None documented


function LoggingConsoleDeviceAdd(Console:PConsoleDevice):LongWord;
Description: To be documented
Note None documented


function LoggingConsoleDeviceRemove(Console:PConsoleDevice):LongWord;
Description: To be documented
Note None documented


function LoggingConsoleDeviceEnum(Console:PConsoleDevice; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function LoggingConsoleDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Description: To be documented
Note None documented


Return to Unit Reference