TraceHandler Interface (PRIM_APP.ITraceHandler)

Trace Handler Interface for user defined tracing

Ancestors - None


The iTraceHandler interface is a low overhead tracing mechanism that can be built in to applications to provide feedback for developer without the need to provide replacement runtime objects.
Tracing statements can be written in the RDMLX using the TraceMessageText and TraceMessageData methods and left in place. Unless a Trace Handler is implemented at runtime, they are effectively ignored.


The sample below is a simple web tracehandler.
When this reusable part is created in the runtime and Trace=True added as a parameter on the querystring, tracing output is sent to the browser console.
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_OBJT *implements #Prim_App.iTraceHandler)
   * Include a Define_Com for this reusable part in your web page
   * It will install itself as the TraceHandler if "trace=true" is included as a parameter on the URL
   * You can then embed #sys_appln.TraceMessageText( aaa bbb ccc ddd ) whereever you want to send trace data to the console.
   * Each parameter equates to a single trace statement
   Evtroutine Handling(#Com_Owner.CreateInstance)
      For Each(#Parameter) In(#sys_web.UrlParameters)
         Continue If(#Parameter.Name.UpperCase <> Trace)
         Continue If(#Parameter.Value.uppercase <> True)
         #Sys_appln.TraceHandler <= #Com_owner /* Set this to be the trace handler for the application */
   Mthroutine Name(TraceMessage) Help('Request to trace data received') Options(*redefine)
      #Com_owner.WriteToConsole( #ComponentName #Description #LineNumber #MessageText )
   Mthroutine Name(WriteToConsole) Help('Write an entry to the browser console') Access(*private)
   Define_Map For(*Input) Class(#prim_alph) Name(#ComponentName)
   Define_Map For(*Input) Class(#prim_alph) Name(#Description)
   Define_Map For(*Input) Class(#prim_nmbr) Name(#LineNumber)
   Define_Map For(*Input) Class(#prim_alph) Name(#Message)
   Define_Com Class(#prim_Dat) Name(#Now)
      #Message := "0" ) + " " + #ComponentName + " " + #Description + " " + #LineNumber.asstring + " " + #Message
      #sys_web.Console.Log( #Message )
   Mthroutine Name(TracingState) Options(*redefine)
      #MessageTracingActive := True


Name Description
Initialize Executed when user tracing starts
Terminate Executed when user tracing ends
TraceMessage Executed whenever a trace message is issued
ComponentName, Description, LineNumber, MessageText
TracingState Is Tracing active?

See also

All Component Classes

Technical Reference

LANSA Version 15, April 2020