The Teiid system provides a wealth of information via logging. To control logging level, contexts, and log locations, you should be familiar with log4j and the container's standalone-teiid.xml or domin-teiid.xml configuration files depending upon the start up mode of JBoss AS.
All the logs produced by Teiid are prefixed by "org.teiid". This makes it extremely easy to control of of Teiid logging from a single context. Note however that changes to the log configuration file manually require a restart to take affect. CLI based log context modifications are possible, however details are beyond the scope of this document.
Logging Contexts
While all of Teiid's logs are prefixed with "org.teiid", there are more specific contexts depending on the functional area of the system. Note that logs originating from third-party code, including integrated org.jboss components, will be logged through their respective contexts and not through "org.teiid". See the table below for information on contexts relevant to Teiid. See the container's standalone-teiid.xml for a more complete listing of logging contexts used in the container.
Context
|
Description
|
com.arjuna
|
Third-party transaction manager. This will include information about all transactions, not just those for Teiid.
|
org.teiid
|
Root context for all Teiid logs. Note: there are potentially other contexts used under org.teiid than are shown in this table.
|
org.teiid.PROCESSOR
|
Query processing logs. See also org.teiid.PLANNER for query planning logs.
|
org.teiid.PLANNER
|
Query planning logs.
|
org.teiid.SECURITY
|
Session/Authentication events - see also AUDIT logging
|
org.teiid.TRANSPORT
|
Events related to the socket transport.
|
org.teiid.RUNTIME
|
Events related to work management and system start/stop.
|
org.teiid.CONNECTOR
|
Connector logs.
|
org.teiid.BUFFER_MGR
|
Buffer and storage management logs.
|
org.teiid.TXN_LOG
|
Detail log of all transaction operations.
|
org.teiid.COMMAND_LOG
|
See command logging
|
org.teiid.AUDIT_LOG
|
See audit logging
|
org.teiid.ADMIN_API
|
Admin API logs.
|
org.teiid.ODBC
|
ODBC logs.
|
Command Logging
Command logging captures executing commands in the Teiid System. Both user commands (that have been submitted to Teiid) and data source commands (that are being executed by the connectors) are tracked through command logging.
To enable command logging to the default log location, simply enable the DETAIL level of logging for the org.teiid.COMMAND_LOG context.
To enable command logging to an alternative file location, configure a separate file appender for the DETAIL logging of the org.teiid.COMMAND_LOG context. An example of this is shown below and can also be found in the standalone-teiid.xml distributed with Teiid.
<periodic-rotating-file-handler name="COMMAND_FILE">
<level name="INFO" />
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n" />
</formatter>
<file relative-to="jboss.server.log.dir" path="command.log" />
<suffix value=".yyyy-MM-dd" />
</periodic-rotating-file-handler>
<logger category="org.teiid.COMMAND_LOG">
<level name="INFO" />
<handlers>
<handler name="COMMAND_FILE" />
</handlers>
</logger>
See the Developer's Guide to develop a custom logging solution if file based, or any other built-in Log4j, logging is not sufficient.
The following is a logging example of a data source command and what one would look like when printed to the command log:
2012-02-22 16:01:53,712 DEBUG [org.teiid.COMMAND_LOG] (Worker1_QueryProcessorQueue11 START DATA SRC COMMAND: startTime=2012-02-22 16:01:53.712
requestID=Ku4/dgtZPYk0.5 sourceCommandID=4 txID=null modelName=DTHCP translatorName=jdbc-simple sessionID=Ku4/dgtZPYk0
principal=user@teiid-security
sql=HCP_ADDR_XREF.HUB_ADDR_ID, CPN_PROMO_HIST.PROMO_STAT_DT FROM CPN_PROMO_HIST, HCP_ADDRESS, HCP_ADDR_XREF
WHERE (HCP_ADDRESS.ADDR_ID = CPN_PROMO_HIST.SENT_ADDR_ID) AND (HCP_ADDRESS.ADDR_ID = HCP_ADDR_XREF.ADDR_ID) AND
(CPN_PROMO_HIST.PROMO_STAT_CD NOT LIKE 'EMAIL%') AND (CPN_PROMO_HIST.PROMO_STAT_CD <> 'SENT_EM') AND
(CPN_PROMO_HIST.PROMO_STAT_DT > {ts'2010-02-22 16:01:52.928'})
Note the following pieces of information:
-
modelName: this represents the physical model for the data source that the query is being issued.
-
translatorName: shows type of translator used to communicate to the data source.
-
principal: shows the user account who submitted the query
-
sql: is the command submitted to the translator for execution, which is NOT necessarily the final sql command submitted to the actual data source. But it does show what the query engine decided to push down.
Audit Logging
Audit logging captures important security events. This includes the enforcement of permissions, authentication success/failures, etc.
To enable audit logging to the default log location, simply enable the DETAIL level of logging for the org.teiid.AUDIT_LOG context.
To enable audit logging to an alternative file location, configure a separate file appender for the DETAIL logging of the org.teiid.AUDIT_LOG context. See the Developer's Guide to develop a custom logging solution if file based, or any other built-in Log4j, logging is not sufficient.