When you use the TOKEN_FORMAT filter in a logging configuration, you can supply tokens whose values are resolved at runtime (when a LogEvent object is processed). The resolved values are then used in the log message that is written to a log file provided by the ABL logging framework. For information about the ABL application logging, see ABL Application Logging.

Here is an example.

"filters": [
    {
       "name": "TOKEN_FORMAT",
       "format": "${t.now} ${msg.level} ${msg}"
    }
]
The token has the syntax ${<token>}. Some tokens have a group and an argument, separated by a period ".". For example, the group t(short for time), has arguments like today (the current date), now (the current timestamp), etc.
Here is a list of all available tokens that you can use:
Group Argument Description
msg The log message defined in an ILogWriter interface method and produced in the LogEvent.
level The log level (ERROR, WARN, INFO, DEBUG, etc).
logger The logging configuration name.
session Any readable attribute of the session handle

You can specify any readable attribute of the session system handle as an argument. For example, ${session.temp-dir}, ${session.client-type}, etc. Refer to the Session system handle documentation for a list of these attributes.

env Any environment variable You can specify any environment variable that is available via the OS-GETENV() ABL function. For example, ${env.path} would resolve to a comma-separated list of the pathnames set in the path environment variable.
ver major The major version of PAS for OpenEdge. For example, if you are using version 12.0.1, this will return 12.
minor The minor version of PAS for OpenEdge. For example, if you are using version 12.0.1, for example, this will return 0.
maint The service pack number of PAS for OpenEdge. For example, if you are using 12.0.1, for example, this will return 1.
t today The current date in ISO-DATE DATE format. For example, 2018-11-05.
now The current timestamp in ISO-DATE DATETIME-TZ format. For example, 2018-11-05T14:00:07.054-05:00.
YYYY The current year, including the century. For example, 2018.
YY The current year, without the century. For example, 18 (for 2018).
BB The full name of the current month. For example, November.
B The shortened name of the current month. For example, Nov.
MM The integer value of the current month with a leading 0, if required. For example, 01 (for January).
M The integer value of the current month with no leading 0. For example, 1 (for January).
DD The integer value of the current day of the month, with a leading 0, if required. For example, 05 (for the 5th day of the current month).
D The integer value of the current day of the month, with no leading 0. For example, 5 (for the 5th day of the current month).
HH The integer value of the current hour, in 24-hour clock format. For example, 18 (for a time between 6 PM and 7 PM).
H The integer value of the current hour, in 12-hour clock format. For example, 6 (for a time between 6 AM and 7 AM or between 6 PM and 7 PM).
MMM The current minute value in the timestamp, with a leading 0.
SS The current seconds value in the timestamp, with a leading 0.
SSS The millisecond value in the current timestamp, with a leading 0.
Z The timezone, based on the current session, with a leading +/-.
PP AM or PM.
P A for AM or P for PM.
AA The full name of the day of the week. For example, Tuesday.
A The shortened name of the day of the week. For example, Tue.
W The integer day of the week, starting from Sunday. If the day of the week is Tuesday, this argument returns 3.
DMY Shorthand for ${T.DD}${T.MM}${T.YYYY}
MDY Shorthand for ${T.MM}${T.DD}${T.YYYY}
YMD Shorthand for ${T.YYYY}${T.MM}${T.DD}
HMS Shorthand for ${T.HH}${T.MM}${T.SS}
MTIME The time since midnight, in milliseconds.
req tpt The transport type for the request (REST, WEB, or APSV).
ccid The client context ID.
id The current request ID.
session The current session ID.
thread The current thread ID.
web webapp The web app name. (Valid only if the session client-type is WebSpeed or Multi-Session-Agent.)
cp uid The current user ID, obtained from the Client-Principal.
quid The current qualified user ID, obtained from the Client-Principal.
domain The domain name of the current user, obtained from the Client-Principal.
name [right- segment- index] [case-expr].<Dot. Separated. String> The ${name.[right-segment-index][case-expression].<String>}token enables you to shorten strings based on the dot "." separator in the string. For instance, you can trim a logging configuration name like Company.Order.Sales to C.O.S.

Each segment in the <string>, can be trimmed by specifying a right-segment-index. All segments, except for those specified in the right-segment-index, get trimmed. The case (uppercase, lowercase, etc) for every trimmed segment can be changed using the case-expression.

Specify an integer value in the right-segment-index to define how many segments, starting from the right, are retained in their original form, while others are trimmed. For example:
  • 0—all segments of the dot-separated string are trimmed. Company.Order.Sales becomes C.O.S.
  • 1—only the last segment of the string is retained in its original form. All other segments are trimmed. Company.Order.Sales becomes C.O.Sales.
  • 2—all segments except for the last two are trimmed. Company.Order.Sales becomes C.Order.Sales.
And so on.
Specify a case expression that applies to the trimmed segments as follows:
  • U—uppercase
  • L—lowercase
  • K—retains the original case of the trimmed segments
  • C—camel case; if any of the trimmed segments has a camel case, each uppercased letter gets concatenated. For example, OpenEdge becomes OE.
Examples:

${name.1L.Company.Order.Sales} becomes c.o.Sales.

${name.0C.Company.Order.OrderLine} becomes C.O.OL.