Skip to main content

Logging Reference

Summary

This document describes the logging architecture used by Velox as it exists in the source code today. It is an internal PKB reference for developers, AI agents, and technical writers. The source code is the authority; where behavior cannot be determined from the code, this document marks it as unclear.

Velox has several related logging surfaces:

  • Flow, transport, and system logs represented by TvxLog and TvxSystemLog.
  • Saved log records in VX_LOG, VX_LOG_ITEM, VX_LOG_FILE, VX_LOG_FILE_LINK, VX_LOG_TRANSPORT, and VX_LOG_TRANSPORT_LINK.
  • Runtime log output shown in Designer log forms.
  • Windows Event Log messages written through TvxEventLogger.
  • Email notifications generated from saved TvxLog content.
  • REST/API problem JSON responses generated from failed logs.
  • Diagnostic text files in the Velox application data log folder.

Source Code Locations

AreaSource
Log type/status enumsClasses\Tools\vxTypes.pas:84, Classes\Tools\vxTypes.pas:88, Classes\Tools\vxTypes.pas:102, Classes\Tools\vxTypes.pas:106, Classes\Tools\vxTypes.pas:110
Main log classesClasses\vxModule.pas:389, Classes\vxModule.pas:436, Classes\vxModule.pas:479, Classes\vxModule.pas:554, Classes\vxModule.pas:809
Global system log lifecycleClasses\vxModule.pas:855, Classes\vxModule.pas:862, Classes\vxModule.pas:868, Classes\vxModule.pas:877
TvxLog construction/defaultsClasses\vxModule.pas:2223, Classes\vxModule.pas:2303
Log item factory and status mappingClasses\vxModule.pas:2751, Classes\vxModule.pas:3855, Classes\vxModule.pas:3953
Log status severity behaviorClasses\vxModule.pas:3403
Log database insert/saveClasses\vxModule.pas:3070, Classes\vxModule.pas:3494, Classes\vxModule.pas:3605
Log child persistenceClasses\vxModule.pas:2842, Classes\vxModule.pas:3915, Classes\vxModule.pas:4429, Classes\vxModule.pas:4697
Log file and transport event creationClasses\vxModule.pas:2436, Classes\vxModule.pas:2518
SQL/HTTP/transport detail captureClasses\vxModule.pas:3753, Classes\vxModule.pas:3758, Classes\vxModule.pas:3775, Classes\vxModule.pas:3781, Classes\vxModule.pas:3788
Notification body and REST error responseClasses\vxModule.pas:3078, Classes\vxModule.pas:3154, Classes\vxModule.pas:3235
Flow logging defaults and save/send rulesClasses\vxActionMan.pas:1494, Classes\vxActionMan.pas:1551, Classes\vxActionMan.pas:2454, Classes\vxActionMan.pas:2856, Classes\vxActionMan.pas:3094
Flow setup logging UIForms\frmSetupActions.pas:170, Forms\frmSetupActions.pas:193, Forms\frmSetupActions.pas:2389, Forms\frmSetupActions.pas:2604, Forms\frmSetupActions.pas:2641, Forms\frmSetupActions.pas:2650
Live log formForms\frmLogs.pas:313, Forms\frmLogs.pas:451, Forms\frmLogs.pas:1008, Forms\frmLogs.pas:1053, Forms\frmLogs.pas:1138, Forms\frmLogs.pas:1225
Log management formsForms\frmManageLogs.pas:147, Forms\frmManageLogs.pas:472, Forms\frmManageTransportLogs.pas:151, Forms\frmManageTransportLogs.pas:481, Forms\frmLogDetails.pas:131
Windows Event Log integrationClasses\Tools\vxEventLogger.pas:25, Classes\Tools\vxEventLogger.pas:41, Classes\Tools\vxEventLogger.pas:129, Classes\Tools\vxEventLogger.pas:179, Classes\Tools\vxEventLogger.pas:192
Designer message dialog integrationClasses\GUI\vxMessages.pas:17, Classes\GUI\vxMessages.pas:25, Classes\GUI\vxMessages.pas:63
HTTP communication hooksClasses\Tools\vxHTTP.pas:587, Classes\Tools\vxHTTP.pas:593, Classes\Transports\vxTransportHTTP.pas:367, Classes\Transports\vxTransportHTTP.pas:373
Transport trace hookClasses\Transports\vxTransport.pas:809
General Setup logging/debug settingsForms\frmSetupGeneral.pas:966, Forms\frmSetupGeneral.pas:974, Forms\frmSetupGeneral.pas:1062, Forms\frmSetupGeneral.pas:1070, Classes\vxSetup.pas:390
Log and diagnostics paths/constantsClasses\Tools\vxConfigPath.pas:39, Classes\Tools\vxConfigPath.pas:91, Classes\Tools\vxConfigPath.pas:113, Classes\Tools\vxConfigPath.pas:381, Classes\Tools\vxConstant.pas:61, Classes\Tools\vxConstant.pas:84
Memory diagnosticsClasses\Tools\vxMemory.pas:14, Classes\Tools\vxMemory.pas:19, Forms\frmMain.pas:2049, VeloxService\classMain.pas:277
mORMot log stream wrapperClasses\Tools\vxLogStream.pas:14, Classes\Tools\vxLogStream.pas:26, Classes\Tools\vxLogStream.pas:33

Important Classes

ClassPurpose
TvxLogMain runtime and persisted log object for flows, transports, and system logs.
TvxSystemLogSpecialized TvxLog used for application/service/system activity. It serializes MessageLog with Lock/Unlock.
TvxLogItemIndividual log message item with level, status, description, exception details, SQL text, and script text.
TvxLogFileFile event record associated with a log, including file connection, definition, path, hash, event type, and optional file data capture.
TvxLogTransportTransport event record associated with a log, including file, transport, retry, notification, and communication logging settings.
TvxEventLoggerWindows Event Log wrapper that can also mirror event messages into gSystemLog.
TvxActionManFlow object that owns flow-level logging defaults, save/send status sets, and detail-capture switches.
TvxEmailEmail sender used by TvxLog.SendLogNotification.
TvxSetupGeneral Setup object containing debug, memory, audit, email, SQL support, and service/runtime settings.

Important Forms

FormPurpose
TLogs (Forms\frmLogs.pas)Live and saved log viewer. Subscribes to TvxLog multicast events and renders log item captions/descriptions.
TManageLogs (Forms\frmManageLogs.pas)Saved log management/search form.
TManageTransportLogs (Forms\frmManageTransportLogs.pas)Transport log management/search/retry status form.
TLogDetails (Forms\frmLogDetails.pas)Details view for a selected log item.
TSetupActions (Forms\frmSetupActions.pas)Flow setup form containing log detail capture, save-status, notification-status, and email routing controls.
TSetupGeneral (Forms\frmSetupGeneral.pas)General Setup form containing system audit/debug/memory/email settings that affect logging and notification behavior.
TMain (Forms\frmMain.pas)Main Designer form exposing log-folder and memory-state actions.

Important Services

ServiceLogging role
VeloxServiceExecutes scheduled, monitored, inbound transport, and outbound transport work. It writes Event Log messages, system audit entries, flow logs, transport logs, and shutdown memory dumps.
VeloxAPIServiceExecutes REST/API flow endpoints. It writes Event Log messages and flow logs, and failed flow execution can produce application/problem+json responses from TvxLog.GetLogAPIResponse.
ConfigurationSourceImpact
Flow SaveLogStatusesTvxActionMan, TSetupActionsDetermines which final flow statuses are persisted by TvxActionMan.SaveLog.
Flow SendLogStatusesTvxActionMan, TSetupActionsDetermines which final flow statuses trigger email notification.
Flow LogSQLTvxActionMan, TSetupActionsEnables SQL script/comment capture in TvxLog.SQLScript.
Flow LogHTTPCommsTvxActionMan, TSetupActionsEnables REQ(...) and RES(...) HTTP communication capture.
Flow LogFileDataTvxActionMan, TSetupActionsEnables file content capture into TvxLogFile.FileData when file engines update log file records.
Flow LogTransportCommsTvxActionMan, TSetupActionsEnables transport trace capture.
Flow AdminEmail, NotifyEmail, UseDefaultEmailTvxActionMan, TSetupActions, TvxSetupSelects notification destinations. Exact fallback behavior for UseDefaultEmail is documented in flow configuration, not repeated here.
General Setup SMTPActive and email settingsTvxSetup, TSetupGeneralTvxLog.SendLogNotification does not send when SMTP is inactive.
General Setup DetailedSystemAuditTvxSetup, TvxSystemLogEnables TvxSystemLog.LogAudit entries.
General Setup EnableDebugTvxSetup, vxConfig.EnableDebugEnables some debug UI and memory heap logging paths.
General Setup EnableMemCheckTvxSetup, TSetupGeneralExposes memory test actions; specific runtime memory-check effects beyond UI visibility are not fully determined in this pass.
General Setup ShutdownMemDumpTvxSetup, VeloxServiceControls service shutdown memory dump behavior where used by service shutdown code.
General Setup SQL2014SupportTvxSetup, TvxLog, TvxLogItemChanges persisted VX_LOG_ITEM.DESCRIPTION truncation length from 840 to 448 characters.
AppDataLogPathvxConfigPath.pasFolder used for diagnostic text files and mORMot log destination configuration when enabled.
LogManagerSettings.inivxConstant.pas, TManageLogsStores the Manage Logs grid/form state.
TransportLogManagerSettings.inivxConstant.pas, TManageTransportLogsStores the Manage Transport Logs grid/form state.

Architecture Overview

TvxLog is both an in-memory runtime object and a persisted Velox module. During execution, code adds TvxLogItem, TvxLogFile, and TvxLogTransport objects to the current log. The live log form subscribes to multicast log events. At completion, flow execution decides whether to persist the log and whether to send email notification based on the configured status sets.

Runtime Object Model

TvxLog owns:

  • Child TvxLogItem records through the inherited child/component model.
  • A list of TvxLogFile file event records.
  • A list of TvxLogTransport transport event records.
  • String lists for SQL script text, flag SQL, unflag SQL, HTTP communication, and transport trace.
  • Multicast notifications for log started, item added, log cleared, and log finished.
  • LogOutputFinishedEvent, used by the log UI to signal that output has finished rendering.

TvxLog.New sets the table to VX_LOG, default description to Log, default executer to AppTitle, and all four detail-capture switches to True. Flow execution overwrites those switches from TvxActionMan via SetActionDetailsToLog.

System Log Model

gSystemLog is a global TvxSystemLog created by CreateSystemLog, saved by SaveSystemLog, optionally switched by SwitchSystemLog, and finalized/freed by FinaliseSystemLog.

TvxSystemLog differs from a normal TvxLog in these ways:

  • It sets LogType := fltSystem.
  • It names the log from AppTitle, current Windows user, and current timestamp.
  • It loads SQL2014Support and DetailedSystemAudit from gSetup before saving.
  • MessageLog is wrapped in Lock/Unlock.
  • LogAudit writes only when DetailedSystemAudit is true.
  • LogAuditDebug writes when DetailedSystemAudit is true and the process is Designer or EnableDebug is true.
  • LogUser writes only when the process is Designer.

Windows Event Log Model

TvxEventLogger creates/registers a Windows event source under:

SYSTEM\CurrentControlSet\Services\Eventlog\Application\<FName>

The message file is vxEventMessages.dll. When LogMessage is called, it:

  • Builds details from the supplied message and optional exception chain.
  • Mirrors error, warning, and information entries into gSystemLog.MessageLog at levels 0, 10, and 20.
  • Registers the Windows event source with up to three attempts and two-second sleeps.
  • Calls ReportEvent.

Foreground Designer message helpers route differently:

  • MessageInfo sends background/off-main-thread messages to the Event Log and foreground messages to an info dialog.
  • MessageWarning sends background/off-main-thread messages to the Event Log; foreground main-thread messages show a dialog and add a gSystemLog warning.
  • MessageError sends background/off-main-thread messages to the Event Log; foreground main-thread messages show a dialog and add a gSystemLog error.

Destinations

VX_LOG

TvxLog.AddModule inserts a row into VX_LOG before saving child records and the module template blob. The inserted fields are:

  • CONFIGNUM
  • FID
  • STATUS
  • HANDLED
  • STARTDATE
  • ENDDATE
  • MODULENAME
  • LOGTYPE
  • ACTIONFID
  • TRANSPORTFID
  • FOLDERFID
  • TEST
  • EXECUTERNAME
  • MODULETYPE

The inserted identity value is read from Output INSERTED.Num into TvxLog.FNum.

VX_LOG_ITEM

Each TvxLogItem is saved to VX_LOG_ITEM with:

  • LOGNUM
  • LEVEL
  • STATUS
  • DESCRIPTION

When SQL2014Support is true, the persisted description is truncated to 448 characters. Otherwise it is truncated to 840 characters. The full log item object is also part of the saved module template blob, so the exact persistence boundary between table rows and blob content matters when troubleshooting older or truncated table data.

TvxLogFile.SaveToDB creates or updates file event data. New rows are inserted into VX_LOG_FILE with:

  • FILECONFID
  • FILEDEFFID
  • TRANSPORTFID
  • TRANSPORTTYPE
  • FILEPATH
  • FILENAME
  • FILEEXT
  • FILEHASH
  • EVENT
  • TEST
  • DOWNLOADNOTE

The source contains a comment that FILEDATA is "to be added later" for the insert statement. However, TvxLogFile.LoadFromDB reads FILEDATA, and LoadFromFileCon/UpdateLogFileData populate FFileData when Log.LogFileData is true. The exact current database persistence path for FFileData is unclear from the code read for this document.

VX_LOG_FILE_LINK links files to logs with LOGNUM, LOGFILENUM, and EVENT.

TvxLogTransport.SaveToDB creates or updates transport event data. New rows are inserted into VX_LOG_TRANSPORT with:

  • LOGFILENUM
  • FILECONFID
  • FILEDEFFID
  • ACTIONFID
  • TRANSPORTFID
  • TRANSPORTTYPE
  • STATUS
  • HANDLED
  • HANDLEDDATE
  • TEST
  • ATTEMPTS
  • NEXTATTEMPTDATE
  • SAVESTATUSES
  • SENDSTATUSES
  • ADMINEMAIL
  • NOTIFYEMAIL
  • LOGHTTPCOMMS
  • LOGTRANSPORTCOMMS
  • TAGDATA

VX_LOG_TRANSPORT_LINK links transport records to logs with LOGNUM, LOGTRANSPORTNUM, and STATUS.

Module Template Blob

After the log header and child database rows are written, TvxLog.AddModule calls SaveModuleTemplate. This persists the object/template representation of the log module. The exact database column name is configured by inherited module template/database settings; the shared module code sets DatabaseSettings.TemplateField := 'MODULE'.

Live Designer Output

TLogs subscribes to:

  • OnLogStarted
  • OnItemAdded
  • OnLogCleared
  • OnLogFinished

The form posts Windows messages to its own handle, then renders TvxLogItem.LevelCaption and TvxLogItem.Description. On finish it sets LogOutputFinishedEvent, which releases execution paths that wait for UI output, including the reprocess-until-error behavior documented in FLOW_EXECUTION.md.

Email Notifications

TvxActionMan.SendLogNotification calls TvxLog.SendLogNotification only when the final status is in SendLogStatuses. TvxLog.SendLogNotification:

  • Refuses to send when the target email is blank and logs a warning.
  • Refuses to send when SMTP is inactive in General Setup and logs a warning.
  • Creates a subject based on final TvxLogStatusType.
  • Builds an HTML body using status-specific text plus GetLogAsStrings.
  • Sends through TvxEmail.
  • If sending raises an exception, logs Error sending log notification - check your email settings, saves the module again, and returns True.

REST/API Problem JSON

TvxLog.GetLogAPIResponse emits a response only when Status is false. The response:

  • Clears the existing response stream.
  • Uses content type application/problem+json.
  • Writes UTF-8 JSON with type, status, title, detail, instance, and errors.
  • Uses log number FNum as instance.
  • Includes only log items with levels 0, 6, and 30.
  • Skips the final log item by iterating to LogCount - 2, so the trailing summary error is not included.

The JSON shape in code is:

{
"type": "error",
"status": 400,
"title": "An error has occurred. Please try again.",
"detail": "See errors array for more information. Provide the instance number to support if needing additional information.",
"instance": "123",
"errors": [
{
"code": "ExceptionClassOr_error",
"detail": "Exception message or log description"
}
]
}

Diagnostic Text Files

The following files are written under AppDataLogPath where the corresponding code path runs:

FileSourcePurpose
MissingProperties.txtvxConfigPath.pasAccumulates module/template load issues such as missing old classes/properties.
APIServiceRequests.txtvxConfigPath.pasAccumulates API service request diagnostics. The call sites creating entries were not fully traced in this pass.
MemoryLog.txtvxMemory.pasAppends heap status lines when debug/test memory heap logging paths call LogMemoryHeap.
MemoryState.txtvxMemory.pas, frmMain.pasIntended FastMM memory-state output. Current LogMemoryState returns False because the FastMM call is commented out.
VeloxServiceShutdownMemoryDump.txtVeloxService\classMain.pasService shutdown memory dump created by CreateBugReport(etHidden) when the shutdown memory-dump path runs.

Levels and Statuses

Log Types

TvxLogType values are:

EnumDisplay textMeaning
fltNotSetNot SetNo log type assigned.
fltActionFlowFlow/action execution log.
fltTransportInInboundInbound transport log.
fltTransportOutOutboundOutbound transport log.
fltSystemSystemSystem/application log.

Log Status Types

TvxLogStatusType values are:

EnumDisplay textEmail recipient type
flsNotSetNot SetAdmin
flsOKSuccessfulNotify
flsWarningWarningNotify
flsIssueIssueNotify
flsDuplicateDuplicateNotify
flsCancelledCancelledNotify
flsErrorErrorAdmin
flsTestTestAdmin
flsHighlightNoteNotify

TvxLog.SetStatusType only updates the stored status when the new enum value is greater than the current value. This means later lower-severity messages do not reduce the final status. flsError sets FStatus := False; flsOK sets FStatus := True.

Message Levels

TvxLog.MessageLog maps integer levels to final log status:

LevelCaption behaviorStatus impact
0ErrorSets flsError. Used for program/system errors.
1InfoDoes not change final status through MessageLog.
2Status captionSets flsWarning.
3Status caption, user itemSets flsIssue.
4Status caption, user itemSets flsDuplicate.
5Status captionSets flsCancelled.
6Status captionSets flsError.
7Status caption, user itemDoes not change final status through MessageLog; item status becomes flsTest.
8Status captionDoes not change final status through MessageLog; item status becomes flsHighlight.
10WarningSets flsWarning.
20InfoDoes not change final status.
30Error, user itemSets flsError.
40Warning, user itemSets flsWarning.
50Info, user itemDoes not change final status.
OtherCritical [n]Item status becomes flsNotSet; final status mapping is not defined.

Deadlock handling is special: MessageLog checks CheckForDeadlock(E) for all levels except 5. When a deadlock is detected it logs Deadlock: ... via Deadlock, sets FIsDeadLocked := True, and exits the original log call path.

Transport Status Types

TvxTransportStatusType values are:

EnumDisplay text
ftsSendingSending
ftsCompletedCompleted
ftsCancelledCancelled
ftsFailedFailed
ftsTestTest

TvxLogTransport.IncreaseAttempt increments attempts and changes status to ftsFailed when attempts reach FTransportMaxAttempts.

File Event Types

TvxFileEventType values are:

EnumDisplay text
fetNoneNone
fetReadRead
fetWriteWrite
fetDownloadDownloaded
fetAuditAudited
fetErrorErrored
fetIssueIssue
fetTempMoved Temp
fetTransportTransporting
fetDeleteDeleted

Configuration

Flow Defaults

TvxActionMan.New sets these logging defaults:

SettingDefault in code
LogSQLTrue
LogHTTPCommsTrue
LogFileDataFalse
LogTransportCommsTrue
SaveLogStatusesflsOK, flsWarning, flsIssue, flsDuplicate, flsError
SendLogStatusesflsWarning, flsIssue, flsDuplicate, flsError

Notably, flsCancelled is not in the default SaveLogStatuses.

TvxLog.New defaults all four detail-capture switches to True, but flow execution calls TvxActionMan.SetActionDetailsToLog, which copies the flow settings onto the log before execution output begins.

Flow Setup UI

TSetupActions exposes:

  • cbLogSQL
  • cbLogHTTPComms
  • cbLogFileData
  • cbLogTransportComms
  • Notify status checkboxes for OK, Warning, Issue, Duplicate, Cancelled, and System Error.
  • Save status checkboxes for OK, Warning, Issue, Duplicate, Cancelled, and System Error.
  • cbUseDefaultEmail
  • EdtAdminEmail
  • EdtNotifyEmail

The ignored Forms\LinkedAction\frmSetupActions.pas trial/test/backup form has similar fields, but it is not treated as active product UI.

Execution Manager Copies

Service managers copy logging configuration from flows to runtime execution items:

  • vxManagerScheduler.pas copies settings to schedule execution items.
  • vxManagerMonitor.pas copies settings to monitored folder execution items.
  • vxManagerREST.pas copies settings to REST/API execution items.
  • vxManagerTransportIn.pas copies settings to inbound transport items.
  • vxActionThread.pas copies runtime execution settings to transport objects before transport execution.

General Setup

General Setup affects logging through:

  • Email and SMTP settings used by TvxEmail and TvxLog.SendLogNotification.
  • DetailedSystemAudit used by TvxSystemLog.LogAudit and LogAuditDebug.
  • EnableDebug used by debug UI visibility, TvxSystemLog.LogAuditDebug, REST manager debug gating, and memory heap diagnostics.
  • EnableMemCheck used by memory-test UI visibility.
  • ShutdownMemDump used by service shutdown memory dump behavior.
  • SQL2014Support used by TvxLogItem.SaveToDB truncation behavior.

Message Formats

Log Item Text

The live log viewer and notification body use:

<LevelCaption> : <Description>

LevelCaption is derived from TvxLogItem.LevelCaption.

When present, GetLogAsStrings appends details in these formats:

  • --- Exception (<ExceptionType>) : <ExceptionText>
  • --- SQL Query : <SQLText>

Email Body

GetLogAsStrings appends:

  • Server name.
  • Velox config display name, with (TEST) when test mode is active.
  • Velox version.
  • Folder/action/transport names and identifiers for flow/transport logs.
  • Log number, start date, end date, and duration.
  • Status-specific guidance for duplicate, error, issue, and warning logs.
  • Complete log details.

The notification code contains user-guidance text in source. This PKB does not duplicate all wording; see TvxLog.SendLogNotification and TvxLog.GetLogAsStrings for exact text.

HTTP Communication Detail

When LogHTTPComms is true:

  • Requests are stored as REQ(<URI>):<request>.
  • Responses are stored as RES(<URI>):<response>.

The hooks are used by TvxHTTP and HTTP transports.

SQL Detail

When LogSQL is true:

  • LogSQLScript appends raw SQL statements to SQLScript.
  • LogSQLComment appends comments prefixed with -- .

SQL capture call sites include SQL action execution, script helper functions, issue flagging, and transaction comments in flow execution.

Transport Trace Detail

When LogTransportComms is true, LogTransportTrace assigns the supplied trace string list to FTransportTrace. The exact textual format of individual trace lines depends on the transport implementation producing the trace.

Event Log Detail

TvxEventLogger.LogMessage includes:

  • Supplied description.
  • Exception class name, inner exception class name, message, and stack trace when an exception is supplied.

The exact rendered format in Windows Event Viewer also depends on the Windows event source/message file registration.

High-Level Data Flow

Diagnostics

Log Manager Screens

Use the Designer log management screens to inspect persisted logs:

  • Manage Logs queries saved flow/system logs through TManageLogs.UpdateLogSQL.
  • Manage Transport Logs queries transport records through TManageTransportLogs.UpdateLogSQL.
  • The live/saved log viewer can open related file and transport records from a log.

Application Data Log Folder

TMain.aLogsExecute opens AppDataLogPath. This folder contains diagnostic files such as MissingProperties.txt, APIServiceRequests.txt, MemoryLog.txt, and service memory dump output where those code paths have run.

Memory Diagnostics

LogMemoryHeap writes heap snapshots to MemoryLog.txt. Call sites are gated by EnableDebug and test-mode checks in flow execution, map execution, action thread execution, and log form cleanup.

LogMemoryState currently returns False; the FastMM output call is commented. Therefore the Designer memory-state menu action currently shows an error message rather than opening MemoryState.txt, unless the code is changed.

Service Diagnostics

VeloxService writes Windows Event Log messages throughout service execute/shutdown and system log audit messages for IPC-driven service changes. It can also write VeloxServiceShutdownMemoryDump.txt in the application data log folder on shutdown.

Troubleshooting

A Flow Ran But No Log Was Saved

Check:

  • The final TvxLogStatusType.
  • The flow SaveLogStatuses set.
  • Whether the log was a cancelled log. Cancelled is not included in default SaveLogStatuses.
  • Whether Log.IsDeadlock was set. TvxActionMan.SaveLog saves when the status is in SaveLogStatuses or the log is deadlocked.

A Notification Was Not Sent

Check:

  • The final TvxLogStatusType.
  • The flow SendLogStatuses set.
  • The selected recipient address. Blank recipient logs a warning and exits.
  • General Setup SMTP active/configuration. Inactive SMTP logs a warning and exits.
  • vxLogStatusTypeToEmailTypeString: errors and tests route to Admin; most business statuses route to Notify.

SQL, HTTP, File, Or Transport Details Are Missing

Check:

  • LogSQL for SQL scripts and comments.
  • LogHTTPComms for HTTP request/response strings.
  • LogFileData for file data capture.
  • LogTransportComms for transport trace capture.
  • Whether the runtime path copies flow settings into the execution item and then into the log/transport object.

REST/API Error Response Does Not Include All Messages

This is expected from current code when:

  • The log Status is true. GetLogAPIResponse exits without output.
  • The log item level is not 0, 6, or 30.
  • The message is the final trailing summary item, because GetLogAPIResponse intentionally loops only to LogCount - 2.

Windows Event Log Entries Are Missing

Check:

  • Event source registration under SYSTEM\CurrentControlSet\Services\Eventlog\Application\<FName>.
  • Availability of vxEventMessages.dll.
  • Service/account permissions to create registry keys or register the event source.

If TvxEventLogger.LogMessage runs and gSystemLog is assigned, the message is also mirrored to the Velox system log. If the event source registration fails, the code attempts to log the registration error, but repeated failure behavior beyond the three registration attempts depends on Windows API behavior and is not fully determined here.

Log Descriptions Are Truncated In Queries

VX_LOG_ITEM.DESCRIPTION is truncated during TvxLogItem.SaveToDB:

  • 448 characters when SQL2014Support is true.
  • 840 characters otherwise.

Check the saved module blob or live log object when longer text is required.

Memory State Action Fails

The current code path is expected to fail because LogMemoryState returns False and the FastMM dump call is commented out.

Transport Logs And Flow Logs Do Not Match One-To-One

Transport records are linked through VX_LOG_TRANSPORT_LINK and can be reloaded/updated by outbound transport execution. A transport may be associated with the log that created it and later with a log that attempted or completed sending. Use Manage Transport Logs for transport status history and open related logs by status.

Known Unclear Areas

  • The exact current database persistence path for TvxLogFile.FFileData is unclear. Code populates and loads file data, but the visible insert statement does not include FILEDATA.
  • The exact schema and usage of VX_LOG_SQL, VX_LOG_TAG, and VX_LOG_TRACE are unclear from the logging code read for this document. Delete logic references those tables, but active save logic was not found in TvxLog.
  • TvxLogStream wraps TSynLog, but its family configuration is commented out in initialization. No active call sites for TvxLogStream.Log2 were identified in this pass.
  • APIServiceRequests.txt loading/saving is present in vxConfigPath.pas; the active call sites adding API request entries were not fully traced in this pass.
  • EnableMemCheck effects beyond General Setup UI visibility were not fully determined in this pass.