Difference between revisions of "Unit Logging"

From Ultibo.org
Jump to: navigation, search
 
(5 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
'''Ultibo Logging interface unit'''
+
'''Ultibo Logging Interface unit'''
 
+
''To be documented''
+
  
 
=== Constants ===
 
=== Constants ===
Line 50: Line 48:
 
|-
 
|-
 
| <code>LOGGING_TYPE_SERIAL = 4;</code>
 
| <code>LOGGING_TYPE_SERIAL = 4;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LOGGING_TYPE_MAX = 4;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 64: Line 67:
 
|-
 
|-
 
| <code>LOGGING_STATE_ENABLED = 1;</code>
 
| <code>LOGGING_STATE_ENABLED = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LOGGING_STATE_MAX = 1;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 108: Line 116:
 
|-
 
|-
 
| <code>Data:String;</code>
 
| <code>Data:String;</code>
| TMessage.Msg:LongWord
+
| TMessage.Msg:PtrUInt
 
|-
 
|-
| <code>Reserved1:LongInt;</code>
+
| <code>Reserved1:PtrUInt;</code>
| TMessage.wParam:LongInt
+
| TMessage.wParam:PtrUInt
 
|-
 
|-
| <code>Reserved2:LongInt;</code>
+
| <code>Reserved2:PtrInt;</code>
| TMessage.lParam:LongInt
+
| TMessage.lParam:PtrInt
 
|-
 
|-
 
| <code>Reserved3:LongWord;</code>
 
| <code>Reserved3:LongWord;</code>
Line 134: Line 142:
 
|-
 
|-
 
| <code>Content:String;</code>
 
| <code>Content:String;</code>
| TMessage.Msg:LongWord
+
| TMessage.Msg:PtrUInt
 
|-
 
|-
 
| <code>Tag:String;</code>
 
| <code>Tag:String;</code>
| TMessage.wParam:LongInt
+
| TMessage.wParam:PtrUInt
 
|-
 
|-
| <code>Severity:LongInt;</code>
+
| <code>Severity:PtrInt;</code>
| TMessage.lParam:LongInt
+
| TMessage.lParam:PtrInt
 
|-
 
|-
 
| <code>Facility:LongWord;</code>
 
| <code>Facility:LongWord;</code>
Line 302: Line 310:
 
|-
 
|-
 
| <code>Logging:TLoggingDevice;</code>
 
| <code>Logging:TLoggingDevice;</code>
| style="width: 50%;"|&nbsp;
+
| &nbsp;
 
|-
 
|-
 
|colspan="2"|''Console Properties''
 
|colspan="2"|''Console Properties''
 
|-
 
|-
 
| <code>Console:PConsoleDevice;</code>
 
| <code>Console:PConsoleDevice;</code>
| &nbsp;
+
| The console device for logging output
 
|-
 
|-
 
| <code>Window:TWindowHandle;</code>
 
| <code>Window:TWindowHandle;</code>
| &nbsp;
+
| The console window for logging output
 +
|-
 +
| <code>Existing:LongBool;</code>
 +
| True if the console window already existed when logging started
 
|-
 
|-
 
|}
 
|}
Line 431: Line 442:
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Default
 +
| If true allow the new device the default logging device if there is no current default
 
|-
 
|-
 
! Return
 
! Return
Line 446: Line 460:
 
! 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)
 +
|-
 +
! Default
 +
| If true allow the new device the default logging device if there is no current default
 
|-
 
|-
 
! Return
 
! Return
Line 578: Line 595:
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingStart(Logging:PLoggingDevice):LongWord;</pre>
 
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingStart(Logging:PLoggingDevice):LongWord;</pre>
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of LoggingDeviceStart API for Console Logging</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
 
! Note
 
! Note
| None documented
+
| Not intended to be called directly by applications, use LoggingDeviceStart instead.
 
|-
 
|-
 
|}
 
|}
Line 590: Line 607:
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingStop(Logging:PLoggingDevice):LongWord;</pre>
 
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingStop(Logging:PLoggingDevice):LongWord;</pre>
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of LoggingDeviceStop API for Console Logging</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
 
! Note
 
! Note
| None documented
+
| Not intended to be called directly by applications, use LoggingDeviceStop instead.
 
|-
 
|-
 
|}
 
|}
Line 602: Line 619:
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;</pre>
 
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;</pre>
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of LoggingDeviceOutput API for Console Logging</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
 
! Note
 
! Note
| None documented
+
| Not intended to be called directly by applications, use LoggingDeviceOutput instead.
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ConsoleLoggingSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of LoggingDeviceSetTarget API for Console Logging</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Not intended to be called directly by applications, use LoggingDeviceSetTarget instead.
 
|-
 
|-
 
|}
 
|}
Line 670: Line 699:
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
<pre style="border: 0; padding-bottom:0px;">function LoggingDeviceGetCount:LongWord; inline;</pre>
+
<pre style="border: 0; padding-bottom:0px;">function LoggingDeviceGetCount:LongWord;</pre>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current logging device count</div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current logging device count</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
Line 682: Line 711:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
<pre style="border: 0; padding-bottom:0px;">function LoggingDeviceGetDefault:PLoggingDevice; inline;</pre>
+
<pre style="border: 0; padding-bottom:0px;">function LoggingDeviceGetDefault:PLoggingDevice;</pre>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default logging device</div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default logging device</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
Line 708: Line 737:
 
<pre style="border: 0; padding-bottom:0px;">function LoggingDeviceCheck(Logging:PLoggingDevice):PLoggingDevice;</pre>
 
<pre style="border: 0; padding-bottom:0px;">function LoggingDeviceCheck(Logging:PLoggingDevice):PLoggingDevice;</pre>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if the supplied Logging device is in the Logging table</div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if the supplied Logging device is in the Logging table</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function LoggingTypeToString(LoggingType:LongWord):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a Logging type value to a string</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function LoggingStateToString(LoggingState:LongWord):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a Logging state value to a string</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"

Latest revision as of 05:27, 1 March 2023

Return to Unit Reference


Description


Ultibo Logging Interface unit

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_TYPE_MAX = 4;  


Logging device state LOGGING_STATE_*
LOGGING_STATE_DISABLED = 0;  
LOGGING_STATE_ENABLED = 1;  
 
LOGGING_STATE_MAX = 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:PtrUInt
Reserved1:PtrUInt; TMessage.wParam:PtrUInt
Reserved2:PtrInt; TMessage.lParam:PtrInt
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:PtrUInt
Tag:String; TMessage.wParam:PtrUInt
Severity:PtrInt; TMessage.lParam:PtrInt
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; The console device for logging output
Window:TWindowHandle; The console window for logging output
Existing:LongBool; True if the console window already existed when logging started


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
Default If true allow the new device the default logging device if there is no current default
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)
Default If true allow the new device the default logging device if there is no current default
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: Implementation of LoggingDeviceStart API for Console Logging
Note Not intended to be called directly by applications, use LoggingDeviceStart instead.


function ConsoleLoggingStop(Logging:PLoggingDevice):LongWord;
Description: Implementation of LoggingDeviceStop API for Console Logging
Note Not intended to be called directly by applications, use LoggingDeviceStop instead.


function ConsoleLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Description: Implementation of LoggingDeviceOutput API for Console Logging
Note Not intended to be called directly by applications, use LoggingDeviceOutput instead.


function ConsoleLoggingSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;
Description: Implementation of LoggingDeviceSetTarget API for Console Logging
Note Not intended to be called directly by applications, use LoggingDeviceSetTarget instead.


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;
Description: Get the current logging device count
Note None documented


function LoggingDeviceGetDefault:PLoggingDevice;
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 LoggingTypeToString(LoggingType:LongWord):String;
Description: Convert a Logging type value to a string
Note None documented


function LoggingStateToString(LoggingState:LongWord):String;
Description: Convert a Logging state value to a string
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