30. Configuration File Shortcuts

This appendix describes features that AMPS provides for simpifying configuration

AMPS Configuration File Special Characters

In AMPS there are a few special characters that you should be aware of when creating your configuration file. These characters can provide some handy short cuts and make configuration creation easier, but you should also be aware of them so as not to introduce errors.

State of the World File Name

When specifying the file for a State of the World database, using the %n string in the file name specifies that the AMPS server will use the message type and topic name in that position to create a unique filename. Example 30.1 shows how to use this in the AMPS configuration file.

 <SOW>
    <Topic>
        <Topic>Customers</Topic>
        <FileName>./sow/%n.sow</FileName>
        <MessageType>json</MessageType>
        <Key>/customerId</Key>
    </Topic>
</SOW>

Example 30.1: SOW file name tokens used in configuration file

Log Rotation Name

When specifying an AMPS log file which has RotationThreshold specified, using the %n string in the log file name is a useful mechanism for ensuring the name of the log file is unique and sequential. Example 30.2 shows a file name token replacement in the AMPS configuration file.

<Logging>
    <Target>
        <Protocol>file</Protocol>
        <Level>info</Level>
        <FileName>log/log-%n.log</FileName>
        <RotationThreshold>2G</RotationThreshold>
    </Target>
</Logging>

Example 30.2: Log file name used in configuration file

In the above example, a log file will be created in the AMPSDIR/log/ directory. The first time this file is created, it will be named log-1.log. Once the log file reaches the RotationThreshold limit of 2G, the previous log file will be saved, and the new log file name will be incremented by one. Thus, the next log file will be named AMPSDIR/log/log-2.log.

Dates

AMPS allows administrators to use date-based file names when specifying the file name in the configuration, as demonstrated in Example 30.3.

<Logging>
    <Target>
        <Protocol>file</Protocol>
        <Level>info</Level>
        <FileName>
            log/log-%Y-%m-%dT%H%M%S.log
        </FileName>
        <RotationThreshold>2G</RotationThreshold>
    </Target>
</Logging>

Example 30.3: Date tokens used in configuration file

In the above example, a log file will be created in the $AMPSDIR/log named 2011-01-01-120000.log if the log was created at noon on January 1, 2011.

AMPS provides full support for the date tokens provided by the standard strftime function, with the exception of %n, as described above. The following table shows some of the most commonly used tokens:

Token Provides Example
%a Short weekday name Fri
%A Full weekday name Friday
%b Short month name Feb
%B Full month name February
%c Simple date and time Fri Feb 14 17:25:00 2014
%C Century 20
%d Day of the month (leading zero if necessary) 05
%D Short date format (MM/DD/YY) 02/20/14
%e Day of the month (leading space if necessary) 5
%F Short date format (YYYY-MM-DD) 2014-02-20
%H Hour (00-23) 17
%I Hour (00-12) 05
%j Day of the year (001-366) 051
%m Month (01-12) 02
%p AM or PM PM
%r Current time, 12 hour format 05:25:00 pm
%R Current time, 24 hour format 17:25
%T ISO 8601 Time format 17:25:00
%u ISO 8601 day of the week (1-7, Monday = 1) 5
%V ISO 8601 week number (00-53) 07
%y Year, last two digits 14
%Y Year, four digits 2014
%Z Timezone name or abbreviation (blank if undetermined) PST

Table 30.1: Commonly Used Date and Time Tokens

Using Units in the Configuration

To make configuration easy, AMPS permits the use of units to expand values. For example, if a time interval is measured in seconds, then the letter s can be appended to the value. For example, the following SOW topic definition used the Expiration tag to set the record expiration to 86400 seconds (one day).

<SOW>
    <Topic>
        ...

        <Expiration>86400s </Expiration>

        ...
    </Topic>
</SOW>

Example 30.4: Expiration using seconds

An even easier way to specify an expiration of one day is to use the following Expiration:

<SOW>
    <Topic>
        ...

        <Expiration>1d</Expiration>

        ...
    </Topic>
</SOW>

Example 30.5: Expiration using days

Table 30.2 shows a listing of the time units AMPS supports in the configuration file.

Units Description
ns nanoseconds
us microseconds
ms milliseconds
s seconds
m minutes
h hours
d days
w weeks

Table 30.2: AMPS Configuration - Time Units

AMPS configuration supports a similar mechanism for byte-based units when specifying sizes in the configuration file. Table 30.3 shows a listing of the byte units AMPS supports in the configuration file.

Units Description
kb kilobytes
mb megabytes
gb gigabytes
tb terabytes

Table 30.3: AMPS Configuration - Byte Units

Dealing with large numbers in AMPS configuration can also be simplified by using common exponent values to handle raw values. This means that instead of having to input 10000000 to represent ten million, a user can input 10M. Table 30.4 contains a list of the exponents supported.

Units Description
k 103 - thousand
M 106 - million

Table 30.4: AMPS Configuration - Numeric Units

tip To make it easier for users to remember the units, AMPS interval and byte units are not case sensitive.

Environment Variables in AMPS Configuration

AMPS configuration also allows for environment variables to be used as part of the data when specifying a configuration file. These variables can be set in the environment when AMPS starts, or passed to AMPS using the -D option on the command line.

If a global system variable is commonly used in an organization, then it may be useful to define this in one location and re-use it across multiple AMPS installations or applications. AMPS will replace any token wrapped in ${} with the environment variable defined in the current user operating system environment. Example 30.6 demonstrates how the environment variable ENV_LOG is used to define a global environment variable for the location of the host logging.

<Logging>
    <Target>
        <Protocol>file</Protocol>
        <FileName>${ENV_LOG}</FileName>
        <Level>info</Level>
        <RotationThreshold>2G</RotationThreshold>
    </Target>
</Logging>

Example 30.6: Environment variables in AMPS configuration

Internal Environment Variables

In addition to supporting custom environment variables, AMPS includes a configuration variable, AMPS_CONFIG_DIRECTORY, which can be used to reference the directory in which the configuration file used to start AMPS is located. For example, assume that AMPS was started with the following command at the command prompt:

%>./ampServer ../amps/config/config.xml

Given this command, the log file configuration option shown in Example 30.7 can be used to instruct AMPS to create the log files in the same parent directory as the configuration file — in this case ../amps/config/logs/infoLog.log.

<Logging>
    <Target>
        <Protocol>file</Protocol>
        <FileName>${AMPS_CONFIG_DIRECTORY}/logs/infoLog.log</FileName>
        <Level>info</Level>
        <RotationThreshold>2G</RotationThreshold>
    </Target>
</Logging>

Example 30.7: AMPS_CONFIG_DIRECTORY environment variable example

In addition to the AMPS_CONFIG_DIRECTORY environment variable, AMPS also supports the AMPS_CONFIG_PATH, which is an absolute path to the configuration file used to start AMPS.