Use deferred logging in PAS for OpenEdge
- Last Updated: July 3, 2025
- 3 minute read
- OpenEdge
- Version 12.2
- Documentation
Deferred logging in PAS for OpenEdge opens an in-memory buffer to record information immediately preceding a multi-session agent crash. It also lets system administrators run an on-demand monitoring check on the instance. The in-memory buffer is configured independently from the agent log and automatically writes to the agent log file on the event of a crash or when it is called via an API.
If a PAS for OpenEdge multi-session agent crashes with deferred logging enabled, the buffer memory is automatically printed to the abl-app-name .agent. datestamp .log file. Additionally, a system administrator or DevOps engineer can use a REST or JMX API to dump the in-memory buffer to the agent log file for close monitoring of a production system.
The following video introduces deferred logging in PAS for OpenEdge:
The deferred logging is set in the openedge.properties
file.There are three properties that allow system administrators to control how much
in-memory logging information is stored: defrdLogNumLines ,
defrdLoggingLevel ,
defrdLogEntryTypes . The deferred logging buffer is enabled if all three properties are
set to a non-zero value.
Deferred logging keeps a separate memory buffer from the regular agent logging. Deferred logging can be set to record different log entry types and to record at different logging levels. A separate memory buffer can help keep the regular agent log to a minimal size, while providing another type of logging for reconstructing agent crashes or monitoring the application without impacting performance.
For example, if you were running 200 sessions on each agent and running multiple agents, it would require thousands of buffer lines to capture all debugging information. This circumstance would create a log file which would be difficult to parse and could impact performance. Deferred logging allows you to create a separate logging buffer which saves only the specified number of log number lines and log entry types. This gives a higher logging level only immediately preceding an agent crash or when it is invoked via API. Deferred logging allows for only the context of the crash to display, while allowing the regular agent log to print other messages or at a lower logging level.
- Use oeprop to specify the number of lines to be saved in the deferred
logging buffer:
oeprop.{bat|sh} AppServer.SessMgr.defrdLogNumLines=500There are two types of log entries that can be written to the buffer: Unconditional entries, including start-up and error events, and conditional which are based on logging-level and startup type. The unconditional entries use some lines specified with this property. The default value is 0, which disables the feature.
- Use oeprop to specify the logging level of the deferred logging
buffer:
oeprop.{bat|sh} AppServer.SessMgr.defrdLoggingLevel=4You could use the deferred logging buffer to act as a stack trace preceding crash events, or set it to record a separate log entry type from the agent log. If this property is set to 0, no deferred log file buffer is written to the agent log file.
- Use oeprop to specify deferred log entry type:
oeprop.{bat|sh} AppServer.SessMgr.defrdLogEntryTypes=4GLTraceThe default is the4GLTracelog entry type. The following agent log entry types are supported for deferred logging:-
4GLTrace -
ASPlumbing -
DB.Connects
Note: Deferred logging does not currently support all log entry types that can be configured for the PAS for OpenEdge agent. If deferred logging is turned on, and an unsupported log entry type is specified in thedeferredLogEntryTypesproperty, log messages for the unsupported log entry type will be written to the agent log file. At present,DYNOBJECTis not supported for deferred logging. -
- When an agent crashes, the deferred logging buffer is printed to the agent
log file. Alternatively, you can invoke an API to print the deferred logging buffer to the
agent log file or clear the deferred log buffer. For more information, see:
- REST APIs: Flush deferred log buffer to agent log file and Reset deferred log buffer.
- OEJMX queries: Flush deferred log buffer to agent log file query and Reset deferred log buffer query.