ARMAppender

Logs performance data based on ARM 2.0 and ARM 4.0 standards. It supports default transaction correlation and converts ARM transaction events that were created before SAS 9.2 into SAS log events.
Valid in: XML Configuration
Note: ARMAppender syntax is case sensitive.
See: This document covers only the syntax of ARMAppender. For information about using ARM in SAS, including details about using ARMAppender, see SAS Interface to Application Response Measurement (ARM): Reference

Syntax

<appender class="FileAppender" name="ARM-log-name">
<param name="File" value="file-name"/>
<layout>
<param name="ConversionPattern"
value="%d,
%X{App.Name},
%X{ARM.Id},
%X{ARM.GroupName},
%X{ARM.TranName},
%X{ARM.TranState},
%X{ARM.TranId},
%X{ARM.TranHandle},
%X{ARM.ParentCorrelator},
%X{ARM.CurrentCorrelator},
%X{ARM.TranStatus},
%X{ARM.TranStart.Time},
%X{ARM.TranStop.Time},
%X{ARM.TranBlocked.Time},
%X{ARM.TranResp.Time}
"/>
</layout>
</appender>
<appender class="ARMAppender" name="ARM-appender-name">

<param name="Agent" value="ARM-agent-library"/>

<param name="Encoding" value="encoding-value"/>

<param name="GetTimes" value="TRUE | FALSE"/>

<param name="ManageCorrelators" value= "TRUE | FALSE"/>

<param name="AppName" value="application-name"/>

<param name="GroupName" value="group-name"/>

<appender-ref ref="ARM-log-names"/>
      
</appender>

Syntax Description

appender class="ARMAppender" name="ARM-appender-name"
specifies an appender name for the ARM appender.
Default None
Restriction Only one instance of an ARMAppender can exist per process.
name="Agent" value="ARM-agent-library"
specifies the name of the library that contains the external ARM 4.0 agent library that receives the events, in addition to the referenced appenders. See your vendor documentation for the correct library name. Two values can be used:
value=" "
if no agent is specified, output is sent to any referenced appenders. In the syntax example, the output is sent to the file appender, "ARM-log-name".
Note If you intend to have a null value for the Agent parameter, you do not need to specify the parameter.
value="library-name"
specifies the name of the library that contains the external ARM 4.0 agent library that receives the events.
Notes Output is always sent to all referenced appenders as well as to the external agent, if specified, and to the ARM log.
This parameter is not required.
name="AppName" value="application-name"
specifies the name of the application. The maximum length of the value is 128 characters, which includes the termination character ( / ). This value is sent to the ARM_REGISTER_APPLICATION() function call. To override this value, specify the SAS start-up option LOGAPPLNAME=application-name.
Default SAS
Note This parameter is not required.
name="ConversionPattern" value="conversion-pattern"
specifies how the log event is written to the ARM log.
Default None. If a conversion pattern is not specified, then the log event produces an empty string.
Note This parameter is not required.
name="Encoding" value="encoding-value"
specifies the type of character set encoding that is used for strings that are sent to and calls that are received by the ARM 4.0 agent library.
Default Native Unicode character is set for the host, or UTF-8 as required by the ARM 4.0 standards.
Note This parameter is not required.
name="File" value="path-and-filename"
specifies the path and filename of the file to which ARM messages are written.
Default None
Note This parameter is required.
name="GetTimes" value="TRUE | FALSE"
enables the ARM appender to compute transaction response time metrics.
TRUE
enables the appender to compute transaction response times.
FALSE
disables the appender to compute transaction response times.
Default FALSE
Note This parameter is not required.
name="ManageCorrelators" value="TRUE | FALSE"
specifies whether ARMAppender manages transaction correlation.
TRUE
enables automatic transaction correlation. The true value might affect existing benchmarks for ARM 2.0 records.
FALSE
enables the application to manage transaction correlation.
Default TRUE
Note This parameter is not required.
name="GroupName" value="group-name"
specifies the name of a group of application instances, if any. Application instances that are started with a common run-time purpose are candidates for using the same group name. The maximum length of the value is 256 characters. This value is passed to the ARM_START_APPLICATION() function call.
Default The current user ID if available, otherwise NULL
Note This parameter is not required.

Details

ARMAppender is configured and customized for accessing performance data. The primary role of ARMAppender is to record ARM transaction events, process the events, and route the events to an appropriate output destination. These events, when processed by ARMAppender, are formatted in the appropriate ARM 4.0 format, using the fixed portion of the message and the values that were recorded in the diagnostic context.
The existing ARM 2.0 implementations are changed to logger requests that contain the appropriate performance event attribute settings.
For more information about ARM and ARMAppender, see SAS Interface to Application Response Measurement (ARM): Reference

Example

The following example is a SAS logging facility configuration file that includes ARMAppender. In the appender FileAppender class definition, the conversion pattern is separated by the symbol |. The log message contains any character that you enter between conversion patterns.
<?xml version="1.0" encoding="UTF-8"?>
<logging:configuration xmlns:logging="http://www.sas.com/xml/logging/1.0/">

<appender class="FileAppender" name="ARM2LOG">
   <param name="File" value="arm2.log"/>
   <param name="ImmediateFlush" value="true"/>
   <layout>
      <param name="ConversionPattern" value="%X{ARM2.Record}"/>
   </layout>
</appender>

<appender class="FileAppender" name="ARM4LOG">
   <param name="File" value="arm4.log"/>
   <param name="ImmediateFlush" value="true"/>
   <layout>
      <param name="ConversionPattern" 
    value="%d|%12X{App.Name}|%14X{ARM.GroupName}|%12X{ARM.TranName}|
    %8X{ARM.TranState}|%8X{ARM.TranStatus}|%20X{ARM.TranStart.Time}|
    %20X{ARM.TranStop.Time}|%56X{ARM.ParentCorrelator}|
    %56X{ARM.CurrentCorrelator}"/>
   </layout>
</appender>

<appender class="ARMAppender" name="ARM">
   <param name="Encoding" value="UTF-8"/>
   <param name="GetTimes" value="true"/>
   <param name="ManageCorrelators" value="true"/>
   <param name="AppName" value="yourSampleApp"/>
   <param name="GroupName" value="SAS"/>
   <appender-ref ref="ARM4LOG"/>
   <appender-ref ref="ARM2LOG"/>
</appender>

<appender class="FileAppender" name="LOG">
   <param name="File" value="root.log"/>
   <param name="ImmediateFlush" value="true"/>
   <layout>
      <param name="ConversionPattern" value="%d %c %m"/>
   </layout>
</appender>

<logger name="Perf.ARM" additivity="false">
   <level value="info"/>
   <appender-ref ref="ARM"/>
</logger>

<root>
   <level value="info"/>
   <appender-ref ref="LOG"/>
</root>

</logging:configuration>