MFT stand-alone file logger format
The format of message information written by the file logger can be defined in the FileLoggerFormat.xml file.
The configuration directory for the logger is located in MQ_DATA_PATH/mqft/config/coordination_qmgr_name/loggers/logger_name. When creating a new file logger, a version of this file is created that contains a default set of definitions used by the file logger. For more information about the default log format definition, see MFT stand-alone file logger default log format.
If you want to specify your own custom log format, edit the FileLoggerFormat.xml file.
A custom log format definition
A log format definition consists of a set of message types with each message type having a format definition. A format definition for a message type consists of a set of inserts provided in XPATH format and a separator that is used to separate each insert. The ordering of the inserts determines the order in which the content is placed in the lines generated for output to the log files. For example, this is the definition for the callStarted message type:
<callStarted>
<format>
<inserts>
<insert type="user" width="19" ignoreNull="false">/transaction/action/
@time</insert>
<insert type="user" width="48" ignoreNull="false">/transaction/@ID</insert>
<insert type="system" width="6" ignoreNull="false">type</insert>
<insert type="user" width="0" ignoreNull="false">/transaction/agent/
@agent</insert>
<insert type="user" width="0" ignoreNull="false">/transaction/agent/@QMgr</insert>
<insert type="user" width="0" ignoreNull="false">/transaction/job/name</insert>
<insert type="user" width="0" ignoreNull="true">/transaction/transferSet/
call/command/@type</insert>
<insert type="user" width="0" ignoreNull="true">/transaction/transferSet/
call/command/@name</insert>
<insert type="system" width="0" ignoreNull="true">callArguments</insert>
</inserts>
<separator></separator>
</format>
</callStarted>
This format produces a line in the log file like this:
2011-11-25T10:53:04;414d5120514d5f67627468696e6b20206466cf4e20004f02;[CSTR];
AGENT1;AGENT_QM;Managed Call;executable;echo;call test;
The inserts provided in the format definition are in the order in which the information appears on the line in the log file. For more information on the XML schema defining the format for the FileLoggerFormat.xml file, see Stand-alone file logger format XSD.
Message types
The FTE agents write a range of different message types to the SYSTEM.FTE/Log
sub-topic. For more information, see SYSTEM.FTE topic. The log file definition can contain format definitions for
these types of messages:
callCompleted
callStarted
monitorAction
monitorCreate
monitorFired
notAuthorized
scheduleDelete
scheduleExpire
scheduleSkipped
scheduleSubmitInfo
scheduleSubmitTransfer
scheduleSubmitTransferSet
transferStarted
transferCancelled
transferComplete
transferDelete
transferProgress
For more information about the attributes that an MFT file logger can log for each message type, see Attributes that an MFT file logger can log for each message type. The attributes can be used as XPATH inserts to customize the output of an MFT file logger.
The format of the messages can vary. The majority of message types write a single line in the log
file for each log message consumed from the SYSTEM.FTE/Log sub-topic. This leads to
the simple case where the XPATH addresses provided in the log format definition relate to the root
of the message. These are the message types that use this method to write output:
callCompleted
callStarted
monitorAction
monitorCreate
monitorFired
notAuthorized
scheduleDelete
scheduleExpire
scheduleSkipped
scheduleSubmitInfo
scheduleSubmitTransfer
transferStarted
transferCancelled
transferComplete
transferDelete
scheduleSubmitTransferSet
transferProgressA line of output is written for each item in the transfer set. Information that you want to be fixed for all items in a transfer set can still use XPATH addresses relative to the root of the log message. In the following simplified transferProgress format definition example it's the timestamp and transfer ID that are fixed. Any information that is relative to an item as its root will vary for each line written. In this example the source and destination file information for each item are written.
<transferProgress>
<format>
<inserts>
<insert type="user" width="19" ignoreNull="false">/transaction/action/
@time</insert>
<insert type="user" width="48" ignoreNull="false">/transaction/@ID</insert>
<insert type="system" width="6" ignoreNull="false">type</insert>
<insert type="user" width="3" ignoreNull="true">status/@resultCode</insert>
<insert type="user" width="0" ignoreNull="false">source/file |
source/queue</insert>
<insert type="user" width="0" ignoreNull="false">source/file/@size |
source/queue/@size</insert>
<insert type="user" width="5" ignoreNull="true">source/@type</insert>
<insert type="user" width="6" ignoreNull="true">source/@disposition</insert>
<insert type="user" width="0" ignoreNull="false">destination/file |
destination/queue</insert>
<insert type="user" width="0" ignoreNull="false">destination/file/@size |
destination/queue/@size</insert>
<insert type="user" width="5" ignoreNull="true">destination/@type</insert>
<insert type="user" width="9" ignoreNull="true">destination/@exist</insert>
<insert type="user" width="0" ignoreNull="true">status/supplement</insert>
</inserts>
<separator></separator>
</format>
</transferProgress>
This produces a log file entry of one or more lines in this format:
2011-11-25T13:45:16;414d5120514d5f67627468696e6b20206466cf4e20033702;[TPRO];0
;/src/test1.file;3575;file;leave ;/dest/test1.file;3575;file;overwrite;;
2011-11-25T13:45:16;414d5120514d5f67627468696e6b20206466cf4e20033702;[TPRO];0
;/src/test2.file;3575;file;leave ;/dest/test2.file;3575;file;overwrite;;
Insert Format
There are two types of insert available when defining a format for a message type:
user and system. The type of an insert is defined in the
type attribute of the insert element. Both types of inserts can also have their
layout customized using the width and ignoreNull
attributes of the insert element. For example:
<insert type="user" width="48" ignoreNull="false">/transaction/@ID</insert>
In this example, the insert takes the information found in the log message at
/transaction/@ID and trims or pads it to 48 characters before writing it to the
log. If the content of /transaction/@ID is null it writes the string null after
padding it to 48 characters because the ignoreNull attribute is set to
false. If ignoreNull is set to true the empty
string, padded to 48 characters, is written instead. Setting width="0" means the column width is not
trimmed, it does not mean that the width is trimmed to 0. The ignoreNull attribute
can be used in this way to detect in the log when a null is found when it was not expected. This can
be useful when debugging a new log file definition.
User defined inserts
System defined inserts
System defined inserts contain a keyword that refers to a piece of information that either cannot be found in the log message or is not easy to define using the XPATH language.
Supported systems inserts are:
type- Writes the type of the log message in a short format.callArguments- Writes the set of arguments supplied to a managed call in a space separated format.transferMetaData- Writes the set of metadata entries defined for a transfer in a comma separated key=value format.
The following table lists the value of "type" for system defined inserts for each message type.
| Message type | Value of "type" system insert |
|---|---|
|
callCompleted |
[CCOM] |
|
callStarted |
[CSTR] |
|
monitorAction |
[MACT] |
|
monitorCreate |
[MCRT] |
|
monitorFired |
[MFIR] |
|
notAuthorized |
[AUTH] |
|
scheduleDelete |
[SDEL] |
|
scheduleExpire |
[SEXP] |
|
scheduleSkipped |
[SSKP] |
|
scheduleSubmitInfo |
[SSIN] |
|
scheduleSubmitTransfer |
[SSTR] |
|
scheduleSubmitTransferSet |
[SSTS] |
|
transferStarted |
[TSTR] |
|
transferCancelled |
[TCAN] |
|
transferComplete |
[TCOM] |
|
transferDelete |
[TDEL] |
|
transferProgress |
[TPRO] |