Software Event extension

A software event log is typically recorded at the method call level during software execution. Events generated at this level reference a specific point in the software source code. The Software Event extension captures this event location information, together with some basic runtime information related to this location.

Attributes

Type
  • Key: type
  • Components:
    • event
  • Datatype: xs:string

Software event type, indicating at what point during execution this event was generated. The possible values are enumerated below.

Package
  • Key: calle[er]-package
  • Components:
    • event
  • Datatype: xs:string
The package in the software code architecture to which the method belongs.

Class
  • Key: calle[er]-class
  • Components:
    • event
  • Datatype: xs:string
The class to which the method belongs.

Method
  • Key: calle[er]-method
  • Components:
    • event
  • Datatype: xs:string
The referenced method.

Parameter signature
  • Key: calle[er]-paramSig
  • Components:
    • event
  • Datatype: xs:string
The parameter signature of the referenced method.

Return signature
  • Key: calle[er]-returnSig
  • Components:
    • event
  • Datatype: xs:string
The return signature of the referenced Method

Is constructor?
  • Key: calle[er]-isConstructor
  • Components:
    • event
  • Datatype: xs:boolean
Whether the referenced method is a class constructor.

Instance ID
  • Key: calle[er]-instanceID
  • Components:
    • event
  • Datatype: xs:string
The instance identifier of the corresponding class instance. The absence of an instance identifier is represented by the value “0”.

File name
  • Key: calle[er]-filename
  • Components:
    • event
  • Datatype: xs:string
The file name of the corresponding source code artifact.

Line number
  • Key: calle[er]-lineNr
  • Components:
    • event
  • Datatype: xs:long
The line number of the executed source code statement.

Has data?
  • Key: hasData
  • Components:
    • event
  • Datatype: xs:boolean
Whether method data is recorded for this log.

Return value
  • Key: returnValue
  • Components:
    • event
  • Datatype: xs:string
The return value for the returning Method.

Parameters
  • Key: params
  • Components:
    • event
  • Datatype: List
List of parameters for the called method.

Parameter value
  • Key: paramValue
  • Components:
    • meta
  • Datatype: xs:string
A parameter value in the list params.

Value type
  • Key: valueType
  • Components:
    • meta
  • Datatype: xs:string
The runtime value type for a return or parameter value.

Application name
  • Key: appName
  • Components:
    • event
  • Datatype: xs:string
The user defined application name.

Application tier
  • Key: appTier
  • Components:
    • event
  • Datatype: xs:string
The user defined application tier.

Application node
  • Key: appNode
  • Components:
    • event
  • Datatype: xs:string
The user defined application node.

Application session
  • Key: appSession
  • Components:
    • event
  • Datatype: xs:string
The user defined application session.

Thread ID
  • Key: threadId
  • Components:
    • event
  • Datatype: xs:string
The thread identifier on which the event was generated.

Nanoseconds
  • Key: nanotime
  • Components:
    • event
  • Datatype: xs:long
The elapsed nano time since some fixed but arbitrary time.

Has exception?
  • Key: hasException
  • Components:
    • log
  • Datatype: xs:boolean
If exception data is recorded for this log.

Exception thrown
  • Key: exThrown
  • Components:
    • event
  • Datatype: xs:string
The thrown exception type for a throws or handle event.

Exception Caught
  • Key: exCaught
  • Components:
    • event
  • Datatype: xs:string
The caught exception type for a handle event.

Software event types

The possible software event type values we recognize are:

  • call: The start of a method block.
  • return: The normal end of a method block.
  • throws: The end of a method block in case of an uncaught exception.
  • handle: The start of an exception handle catch block.
  • calling: The start of calling / invoking another method.
  • returning: The end of returning a called method.

Relation to other extensions

The Software Event extension builds on the Concept extension to store the called method name and the called class object and the Time extension to store the time of the call in millisecond precision. Furthermore, the events software events generated on the same execution thread implicitly describe a call graph structure. This nested call graph relation can be explicitly logged using the Micro extension.

The software event type values are related to values in the standard lifecycle transactional model, defined in the Lifecycle extension. We define the following mapping (note that the standard lifecycle transactional model cannot correctly support the handle transition):

  • call: start
  • return: complete
  • throws: ate_abort
  • handle: reassign
  • calling: start
  • returning: complete