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
TvxLogandTvxSystemLog. - Saved log records in
VX_LOG,VX_LOG_ITEM,VX_LOG_FILE,VX_LOG_FILE_LINK,VX_LOG_TRANSPORT, andVX_LOG_TRANSPORT_LINK. - Runtime log output shown in Designer log forms.
- Windows Event Log messages written through
TvxEventLogger. - Email notifications generated from saved
TvxLogcontent. - REST/API problem JSON responses generated from failed logs.
- Diagnostic text files in the Velox application data log folder.
Related PKB Documents
- ARCHITECTURE.md
- DOMAIN_MODEL.md
- FLOW_EXECUTION.md
- ERROR_REFERENCE.md
- SERVICE_REFERENCE.md
- FEATURE_INVENTORY.md
- UI_INVENTORY.md
- MENU_REFERENCE.md
- DIALOG_REFERENCE.md
- Configuration Reference Index
- Flow Configuration
- General Setup Configuration
- System Runtime Configuration
- Transport Configuration
Source Code Locations
| Area | Source |
|---|---|
| Log type/status enums | Classes\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 classes | Classes\vxModule.pas:389, Classes\vxModule.pas:436, Classes\vxModule.pas:479, Classes\vxModule.pas:554, Classes\vxModule.pas:809 |
| Global system log lifecycle | Classes\vxModule.pas:855, Classes\vxModule.pas:862, Classes\vxModule.pas:868, Classes\vxModule.pas:877 |
TvxLog construction/defaults | Classes\vxModule.pas:2223, Classes\vxModule.pas:2303 |
| Log item factory and status mapping | Classes\vxModule.pas:2751, Classes\vxModule.pas:3855, Classes\vxModule.pas:3953 |
| Log status severity behavior | Classes\vxModule.pas:3403 |
| Log database insert/save | Classes\vxModule.pas:3070, Classes\vxModule.pas:3494, Classes\vxModule.pas:3605 |
| Log child persistence | Classes\vxModule.pas:2842, Classes\vxModule.pas:3915, Classes\vxModule.pas:4429, Classes\vxModule.pas:4697 |
| Log file and transport event creation | Classes\vxModule.pas:2436, Classes\vxModule.pas:2518 |
| SQL/HTTP/transport detail capture | Classes\vxModule.pas:3753, Classes\vxModule.pas:3758, Classes\vxModule.pas:3775, Classes\vxModule.pas:3781, Classes\vxModule.pas:3788 |
| Notification body and REST error response | Classes\vxModule.pas:3078, Classes\vxModule.pas:3154, Classes\vxModule.pas:3235 |
| Flow logging defaults and save/send rules | Classes\vxActionMan.pas:1494, Classes\vxActionMan.pas:1551, Classes\vxActionMan.pas:2454, Classes\vxActionMan.pas:2856, Classes\vxActionMan.pas:3094 |
| Flow setup logging UI | Forms\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 form | Forms\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 forms | Forms\frmManageLogs.pas:147, Forms\frmManageLogs.pas:472, Forms\frmManageTransportLogs.pas:151, Forms\frmManageTransportLogs.pas:481, Forms\frmLogDetails.pas:131 |
| Windows Event Log integration | Classes\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 integration | Classes\GUI\vxMessages.pas:17, Classes\GUI\vxMessages.pas:25, Classes\GUI\vxMessages.pas:63 |
| HTTP communication hooks | Classes\Tools\vxHTTP.pas:587, Classes\Tools\vxHTTP.pas:593, Classes\Transports\vxTransportHTTP.pas:367, Classes\Transports\vxTransportHTTP.pas:373 |
| Transport trace hook | Classes\Transports\vxTransport.pas:809 |
| General Setup logging/debug settings | Forms\frmSetupGeneral.pas:966, Forms\frmSetupGeneral.pas:974, Forms\frmSetupGeneral.pas:1062, Forms\frmSetupGeneral.pas:1070, Classes\vxSetup.pas:390 |
| Log and diagnostics paths/constants | Classes\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 diagnostics | Classes\Tools\vxMemory.pas:14, Classes\Tools\vxMemory.pas:19, Forms\frmMain.pas:2049, VeloxService\classMain.pas:277 |
| mORMot log stream wrapper | Classes\Tools\vxLogStream.pas:14, Classes\Tools\vxLogStream.pas:26, Classes\Tools\vxLogStream.pas:33 |
Important Classes
| Class | Purpose |
|---|---|
TvxLog | Main runtime and persisted log object for flows, transports, and system logs. |
TvxSystemLog | Specialized TvxLog used for application/service/system activity. It serializes MessageLog with Lock/Unlock. |
TvxLogItem | Individual log message item with level, status, description, exception details, SQL text, and script text. |
TvxLogFile | File event record associated with a log, including file connection, definition, path, hash, event type, and optional file data capture. |
TvxLogTransport | Transport event record associated with a log, including file, transport, retry, notification, and communication logging settings. |
TvxEventLogger | Windows Event Log wrapper that can also mirror event messages into gSystemLog. |
TvxActionMan | Flow object that owns flow-level logging defaults, save/send status sets, and detail-capture switches. |
TvxEmail | Email sender used by TvxLog.SendLogNotification. |
TvxSetup | General Setup object containing debug, memory, audit, email, SQL support, and service/runtime settings. |
Important Forms
| Form | Purpose |
|---|---|
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
| Service | Logging role |
|---|---|
VeloxService | Executes scheduled, monitored, inbound transport, and outbound transport work. It writes Event Log messages, system audit entries, flow logs, transport logs, and shutdown memory dumps. |
VeloxAPIService | Executes 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. |
Related Configuration
| Configuration | Source | Impact |
|---|---|---|
Flow SaveLogStatuses | TvxActionMan, TSetupActions | Determines which final flow statuses are persisted by TvxActionMan.SaveLog. |
Flow SendLogStatuses | TvxActionMan, TSetupActions | Determines which final flow statuses trigger email notification. |
Flow LogSQL | TvxActionMan, TSetupActions | Enables SQL script/comment capture in TvxLog.SQLScript. |
Flow LogHTTPComms | TvxActionMan, TSetupActions | Enables REQ(...) and RES(...) HTTP communication capture. |
Flow LogFileData | TvxActionMan, TSetupActions | Enables file content capture into TvxLogFile.FileData when file engines update log file records. |
Flow LogTransportComms | TvxActionMan, TSetupActions | Enables transport trace capture. |
Flow AdminEmail, NotifyEmail, UseDefaultEmail | TvxActionMan, TSetupActions, TvxSetup | Selects notification destinations. Exact fallback behavior for UseDefaultEmail is documented in flow configuration, not repeated here. |
General Setup SMTPActive and email settings | TvxSetup, TSetupGeneral | TvxLog.SendLogNotification does not send when SMTP is inactive. |
General Setup DetailedSystemAudit | TvxSetup, TvxSystemLog | Enables TvxSystemLog.LogAudit entries. |
General Setup EnableDebug | TvxSetup, vxConfig.EnableDebug | Enables some debug UI and memory heap logging paths. |
General Setup EnableMemCheck | TvxSetup, TSetupGeneral | Exposes memory test actions; specific runtime memory-check effects beyond UI visibility are not fully determined in this pass. |
General Setup ShutdownMemDump | TvxSetup, VeloxService | Controls service shutdown memory dump behavior where used by service shutdown code. |
General Setup SQL2014Support | TvxSetup, TvxLog, TvxLogItem | Changes persisted VX_LOG_ITEM.DESCRIPTION truncation length from 840 to 448 characters. |
AppDataLogPath | vxConfigPath.pas | Folder used for diagnostic text files and mORMot log destination configuration when enabled. |
LogManagerSettings.ini | vxConstant.pas, TManageLogs | Stores the Manage Logs grid/form state. |
TransportLogManagerSettings.ini | vxConstant.pas, TManageTransportLogs | Stores 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
TvxLogItemrecords through the inherited child/component model. - A list of
TvxLogFilefile event records. - A list of
TvxLogTransporttransport 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
SQL2014SupportandDetailedSystemAuditfromgSetupbefore saving. MessageLogis wrapped inLock/Unlock.LogAuditwrites only whenDetailedSystemAuditis true.LogAuditDebugwrites whenDetailedSystemAuditis true and the process is Designer orEnableDebugis true.LogUserwrites 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.MessageLogat levels0,10, and20. - Registers the Windows event source with up to three attempts and two-second sleeps.
- Calls
ReportEvent.
Foreground Designer message helpers route differently:
MessageInfosends background/off-main-thread messages to the Event Log and foreground messages to an info dialog.MessageWarningsends background/off-main-thread messages to the Event Log; foreground main-thread messages show a dialog and add agSystemLogwarning.MessageErrorsends background/off-main-thread messages to the Event Log; foreground main-thread messages show a dialog and add agSystemLogerror.
Destinations
VX_LOG
TvxLog.AddModule inserts a row into VX_LOG before saving child records and the module template blob. The inserted fields are:
CONFIGNUMFIDSTATUSHANDLEDSTARTDATEENDDATEMODULENAMELOGTYPEACTIONFIDTRANSPORTFIDFOLDERFIDTESTEXECUTERNAMEMODULETYPE
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:
LOGNUMLEVELSTATUSDESCRIPTION
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.
VX_LOG_FILE and VX_LOG_FILE_LINK
TvxLogFile.SaveToDB creates or updates file event data. New rows are inserted into VX_LOG_FILE with:
FILECONFIDFILEDEFFIDTRANSPORTFIDTRANSPORTTYPEFILEPATHFILENAMEFILEEXTFILEHASHEVENTTESTDOWNLOADNOTE
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.
VX_LOG_TRANSPORT and VX_LOG_TRANSPORT_LINK
TvxLogTransport.SaveToDB creates or updates transport event data. New rows are inserted into VX_LOG_TRANSPORT with:
LOGFILENUMFILECONFIDFILEDEFFIDACTIONFIDTRANSPORTFIDTRANSPORTTYPESTATUSHANDLEDHANDLEDDATETESTATTEMPTSNEXTATTEMPTDATESAVESTATUSESSENDSTATUSESADMINEMAILNOTIFYEMAILLOGHTTPCOMMSLOGTRANSPORTCOMMSTAGDATA
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:
OnLogStartedOnItemAddedOnLogClearedOnLogFinished
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 returnsTrue.
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, anderrors. - Uses log number
FNumasinstance. - Includes only log items with levels
0,6, and30. - 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:
| File | Source | Purpose |
|---|---|---|
MissingProperties.txt | vxConfigPath.pas | Accumulates module/template load issues such as missing old classes/properties. |
APIServiceRequests.txt | vxConfigPath.pas | Accumulates API service request diagnostics. The call sites creating entries were not fully traced in this pass. |
MemoryLog.txt | vxMemory.pas | Appends heap status lines when debug/test memory heap logging paths call LogMemoryHeap. |
MemoryState.txt | vxMemory.pas, frmMain.pas | Intended FastMM memory-state output. Current LogMemoryState returns False because the FastMM call is commented out. |
VeloxServiceShutdownMemoryDump.txt | VeloxService\classMain.pas | Service shutdown memory dump created by CreateBugReport(etHidden) when the shutdown memory-dump path runs. |
Levels and Statuses
Log Types
TvxLogType values are:
| Enum | Display text | Meaning |
|---|---|---|
fltNotSet | Not Set | No log type assigned. |
fltAction | Flow | Flow/action execution log. |
fltTransportIn | Inbound | Inbound transport log. |
fltTransportOut | Outbound | Outbound transport log. |
fltSystem | System | System/application log. |
Log Status Types
TvxLogStatusType values are:
| Enum | Display text | Email recipient type |
|---|---|---|
flsNotSet | Not Set | Admin |
flsOK | Successful | Notify |
flsWarning | Warning | Notify |
flsIssue | Issue | Notify |
flsDuplicate | Duplicate | Notify |
flsCancelled | Cancelled | Notify |
flsError | Error | Admin |
flsTest | Test | Admin |
flsHighlight | Note | Notify |
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:
| Level | Caption behavior | Status impact |
|---|---|---|
0 | Error | Sets flsError. Used for program/system errors. |
1 | Info | Does not change final status through MessageLog. |
2 | Status caption | Sets flsWarning. |
3 | Status caption, user item | Sets flsIssue. |
4 | Status caption, user item | Sets flsDuplicate. |
5 | Status caption | Sets flsCancelled. |
6 | Status caption | Sets flsError. |
7 | Status caption, user item | Does not change final status through MessageLog; item status becomes flsTest. |
8 | Status caption | Does not change final status through MessageLog; item status becomes flsHighlight. |
10 | Warning | Sets flsWarning. |
20 | Info | Does not change final status. |
30 | Error, user item | Sets flsError. |
40 | Warning, user item | Sets flsWarning. |
50 | Info, user item | Does not change final status. |
| Other | Critical [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:
| Enum | Display text |
|---|---|
ftsSending | Sending |
ftsCompleted | Completed |
ftsCancelled | Cancelled |
ftsFailed | Failed |
ftsTest | Test |
TvxLogTransport.IncreaseAttempt increments attempts and changes status to ftsFailed when attempts reach FTransportMaxAttempts.
File Event Types
TvxFileEventType values are:
| Enum | Display text |
|---|---|
fetNone | None |
fetRead | Read |
fetWrite | Write |
fetDownload | Downloaded |
fetAudit | Audited |
fetError | Errored |
fetIssue | Issue |
fetTemp | Moved Temp |
fetTransport | Transporting |
fetDelete | Deleted |
Configuration
Flow Defaults
TvxActionMan.New sets these logging defaults:
| Setting | Default in code |
|---|---|
LogSQL | True |
LogHTTPComms | True |
LogFileData | False |
LogTransportComms | True |
SaveLogStatuses | flsOK, flsWarning, flsIssue, flsDuplicate, flsError |
SendLogStatuses | flsWarning, 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:
cbLogSQLcbLogHTTPCommscbLogFileDatacbLogTransportComms- Notify status checkboxes for OK, Warning, Issue, Duplicate, Cancelled, and System Error.
- Save status checkboxes for OK, Warning, Issue, Duplicate, Cancelled, and System Error.
cbUseDefaultEmailEdtAdminEmailEdtNotifyEmail
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.pascopies settings to schedule execution items.vxManagerMonitor.pascopies settings to monitored folder execution items.vxManagerREST.pascopies settings to REST/API execution items.vxManagerTransportIn.pascopies settings to inbound transport items.vxActionThread.pascopies runtime execution settings to transport objects before transport execution.
General Setup
General Setup affects logging through:
- Email and SMTP settings used by
TvxEmailandTvxLog.SendLogNotification. DetailedSystemAuditused byTvxSystemLog.LogAuditandLogAuditDebug.EnableDebugused by debug UI visibility,TvxSystemLog.LogAuditDebug, REST manager debug gating, and memory heap diagnostics.EnableMemCheckused by memory-test UI visibility.ShutdownMemDumpused by service shutdown memory dump behavior.SQL2014Supportused byTvxLogItem.SaveToDBtruncation 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:
LogSQLScriptappends raw SQL statements toSQLScript.LogSQLCommentappends 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
SaveLogStatusesset. - Whether the log was a cancelled log. Cancelled is not included in default
SaveLogStatuses. - Whether
Log.IsDeadlockwas set.TvxActionMan.SaveLogsaves when the status is inSaveLogStatusesor the log is deadlocked.
A Notification Was Not Sent
Check:
- The final
TvxLogStatusType. - The flow
SendLogStatusesset. - 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:
LogSQLfor SQL scripts and comments.LogHTTPCommsfor HTTP request/response strings.LogFileDatafor file data capture.LogTransportCommsfor 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
Statusis true.GetLogAPIResponseexits without output. - The log item level is not
0,6, or30. - The message is the final trailing summary item, because
GetLogAPIResponseintentionally loops only toLogCount - 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
SQL2014Supportis 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.FFileDatais unclear. Code populates and loads file data, but the visible insert statement does not includeFILEDATA. - The exact schema and usage of
VX_LOG_SQL,VX_LOG_TAG, andVX_LOG_TRACEare unclear from the logging code read for this document. Delete logic references those tables, but active save logic was not found inTvxLog. TvxLogStreamwrapsTSynLog, but its family configuration is commented out in initialization. No active call sites forTvxLogStream.Log2were identified in this pass.APIServiceRequests.txtloading/saving is present invxConfigPath.pas; the active call sites adding API request entries were not fully traced in this pass.EnableMemCheckeffects beyond General Setup UI visibility were not fully determined in this pass.