Configuring and Using the WebLogic Diagnostics Framework

     Previous  Next    Open TOC in new window    View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

WLDF Query Language

The WebLogic Diagnostic Framework (WLDF) includes a query language for constructing watch rule expressions, Data Accessor query expressions, and log filter expressions. The syntax is a small and simplified subset of SQL syntax.

The language is described in the following sections:

 


Components of a Query Expression

A query expression may include any of the following:

The query language is case-sensitive.

 


Supported Operators

The query language supports the operators listed in Table A-1.

Table A-1 WLDF Query Language Operators
Operator
Operator Type
Supported Operand Types
Definition
AND
Logical binary
Boolean
Evaluates to true when both expressions are true.
OR
Logical binary
Boolean
Evaluates to true when either expression is true.
NOT
Logical unary
Boolean
Evaluates to true when the expression is not true.
&
Bitwise binary
Numeric,
Dye flag
Performs the bitwise AND function on each parallel pair of bits in each operand. If both operand bits are 1, the & function sets the resulting bit to 1. Otherwise, the resulting bit is set to 0.
Examples of both the & and the | operators are:
  1010 & 0010 = 0010
  1010 | 0001 = 1011
  ( 1010 & ( 1100 | 1101 )) = 1000
|
Bitwise binary
Numeric,
Dye flag
Performs the bitwise OR function on each parallel pair of bits in each operand. If either operand bit is 1, the | function sets the resulting bit to 1. Otherwise, the resulting bit is set to 0.
For examples, see the entry for the bitwise & operator, above.
=
Relational
Numeric, String
Equals
!=
Relational
Numeric
Not equals
<
Relational
Numeric
Less than
>
Relational
Numeric
Greater than
<=
Relational
Numeric
Less than or equals
>=
Relational
Numeric
Greater than or equals
LIKE
Match
String
Evaluates to true when a character string matches a specified pattern that can include wildcards.
LIKE supports two wildcard characters:
A percent sign (%) matches any string of zero or more characters
A period (.) matches any single character
MATCHES
Match
String
Evaluates to true when a target string matches the regular expression patter in the operand String.
IN
Search
String
Evaluates to true when the value of a variable exists in a predefined set, for example:
SUBSYSTEM IN ('A','B')

 


Operator Precedence

The following list shows the levels of precedence among operators, from the highest precedence to the lowest. Operators listed on the same line have equivalent precedence:

  1. ( )
  2. NOT
  3. &, |
  4. =, !=, <, >, <=, >=, LIKE, MATCHES,IN
  5. AND
  6. OR

 


Numeric Relational Operations Supported on String Column Types

Numeric relational operations can be performed on String column types when they hold numeric values. For example, if STATUS is a String type, while performing relational operations with a numeric operand, the column value is treated as a numeric value. For instance, in the following comparisions:

  STATUS = 100

  STATUS != 100

  STATUS < 100

  STATUS <= 100

  STATUS > 100

  STATUS >= 100

the query evaluator attempts to convert the string value to appropriate numeric value before comparision. When the string value cannot be converted to a numeric value, the query fails.

 


Supported Numeric Constants and String Literals

Rules for numeric constants are as follows:

Rules for string literals are as follows:

 


About Variables in Expressions

Variables represent the dynamic portion of a query expression that is evaluated at runtime. You must use variables that are appropriate for the type of expression you are constructing, as documented in the following sections:

 


Creating Watch Rule Expressions

You can create watches based on log events, instrumentation events, and harvested attributes. The variables supported for creating the expressions are different for each type of watch, as described in the following sections:

For complete documentation about configuring and using WLDF watches, see:

Creating Log Event Watch Rule Expressions

A log event watch rule expression is based upon the attributes of a log message from the server log.

Variable names for log message attributes are listed and explained in Table A-2:

Table A-2 Variable Names for Log Event Watch Rule Expressions
Variable
Description
Data Type
CONTEXTID
The request ID propagated with the request.
String
DATE
Date when the message was created.
String
MACHINE
Name of machine that generated the log message.
String
MESSAGE
Message content of the log message.
String
MSGID
ID of the log message (usually starts with "BEA=").
String
RECORDID
The number of the record in the log.
Long
SERVER
Name of server that generated the log message.
String
SEVERITY
Severity of log message. Values are ALERT, CRITICAL, DEBUG, EMERGENCY, ERROR, INFO, NOTICE, OFF, TRACE, and WARNING.
String
SUBSYTEM
Name of subsystem emitting the log message.
String
THREAD
Name of thread that generated the log message.
String
TIMESTAMP
Timestamp when the log message was created.
Long
TXID
JTA transaction ID of thread that generated the log message.
String
USERID
ID of the user that generated the log message.
String

An example log event watch rule expression is:

  (SEVERITY = 'Warning') AND (MSGID = 'BEA-320012')

Creating Instrumentation Event Watch Rule Expressions

An instrumentation event watch rule expression is based upon attributes of a data record created by a diagnostic monitor action.

Variable names for instrumentation data record attributes are listed and explained in Table A-3:

Table A-3 Variable Names for Instrumentation Event Rule Expressions
Variable
Description
Data Type
ARGUMENTS
Arguments passed to the method that was invoked.
String
CLASSNAME
Class name of joinpoint.
String
CONTEXTID
Diagnostic context ID of instrumentation event.
String
CTXPAYLOAD
The context payload associated with this request.
String
DOMAIN
Name of domain.
String
DYES
Dyes associated with this request.
Long
FILENAME
Source file name.
String
LINENUM
Line number in source file.
Integer
METHODNAME
Method name of joinpoint.
String
METHODDSC
Method arguments of joinpoint.
String
MODULE
Name of the diagnostic module.
String
MONITOR
Name of the monitor.
String
PAYLOAD
Payload of instrumentation event.
String
RECORDID
The number of the record in the log.
Long
RETVAL
Return value of joinpoint.
String
SCOPE
Name of instrumentation scope.
String
SERVER
Name of server that created the instrumentation event.
String
TIMESTAMP
Timestamp when the instrumentation event was created.
Long
TXID
JTA transaction ID of thread that created the instrumentation event.
String
TYPE
Type of monitor.
String
USERID
ID of the user that created the instrumentation event.
String

An example instrumentation event data rule expression is:

  (USERID = 'weblogic')

Creating Harvester Watch Rule Expressions

A harvester watch rule expression is based upon one or more harvestable MBean attributes. The expression can specify an MBean type, an instance, and/or an attribute.

The syntax for constructing a Harvester watch rule expression is as follows:

The expression must include the complete MBean object name, as shown in the following example:

${com.bea:Name=HarvesterRuntime,Location=myserver,Type=HarvesterRuntime,
      ServerRuntime=myserver//TotalSamplingCycles} > 10

 


Creating Data Accessor Queries

Use the WLDF query language with the Data Accessor component to retrieve data from data stores, including server logs, HTTP logs, and harvested metrics. The variables used to build a Data Accessor query are based on the column names in the data store from which you want to extract data.

A Data Accessor query contains the following:

When there is a match, all columns of matching rows are returned.

Data Store Logical Names

The logical name for a data store must be unique. It denotes a specific data store available on the server. The logical name consists of a log type keyword followed by zero or more identifiers separated by the forward-slash (/) delimiter. For example, the logical name of the server log data store is simply ServerLog. However, other log types may require additional identifiers, as shown in Table A-4.

Table A-4 Naming Conventions for Log Types
Log Type
Optional Identifiers
Example
ConnectorLog
The JNDI name of the connection factory.
ConnectorLog/eis/
 900eisaBlackBoxXATxConnectorJNDINAME
where
 eis/900eisaBlackBoxXATxConnectorJNDINAME
is the JNDI name of the connection factory specified in the weblogic-ra.xml deployment descriptor.
DomainLog
None
DomainLog
EventsDataArchive
None
EventsDataArchive
HarvestedDataArchive
None
HarvestedDataArchive
HTTPAccessLog
Virtual host name
HTTPAccessLog - For the default web server's access log.
HTTPAccessLog/MyVirtualHost - For the Virtual host named MyVirtualHost deployed to the current server.
Note: In the case of HTTPAccessLogs with extended format, the number of columns are user-defined.
JMSMessageLog
The name of the JMS Server.
JMSMessageLog/MyJMSServer
ServerLog
None
ServerLog
WebAppLog
Web server name +
Root servlet context name
WebAppLog/MyWebServer/MyRootServletContext

Data Store Column Names

The column names included in a query are resolved for each row of data. A row is added to the result set only if it satisfies the query conditions for all specified columns. A query that omits column names returns all the entries in the log.

All column names from all WebLogic Server log types are listed in Table A-5.

Table A-5 Column Names for Log Types
Log Type
Column Names
ConnectorLog
LINE, RECORDID
DomainLog
CONTEXTID, DATE, MACHINE, MESSAGE, MSGID, RECORDID, SERVER, SEVERITY, SUBSYSTEM, THREAD, TIMESTAMP, TXID, USERID
EventsDataArchive
ARGUMENTS, CLASSNAME, CONTEXTID, CTXPAYLOAD, DOMAIN, DYES, FILENAME, LINENUM, METHODNAME, METHODDSC, MODULE, MONITOR, PAYLOAD, RECORDID, RETVAL, SCOPE, SERVER, TIMESTAMP, TXID, TYPE, USERID
HarvestedDataArchive
ATTRNAME, ATTRTYPE, ATTRVALUE, DOMAIN, NAME, RECORDID, SERVER, TIMESTAMP, TYPE
HTTPAccessLog
AUTHUSER, BYTECOUNT, HOST, RECORDID, REMOTEUSER, REQUEST, STATUS, TIMESTAMP
JDBCLog
Same as DomainLog
JMSMessageLog
CONTEXTID, DATE, DESTINATION, EVENT, JMSCORRELATIONID, JMSMESSAGEID, MESSAGE, MESSAGECONSUMER, NANOTIMESTAMP, RECORDID, SELECTOR, TIMESTAMP, TXID, USERID
ServerLog
Same as DomainLog
WebAppLog
Same as DomainLog

An example of a Data Accessor query is:

(SUBSYSTEM = 'Deployer') AND (MESSAGE LIKE '%Failed%')

In that example, the Accessor will retrieve all messages from the Deployer subsystem that include the string “Failed.”

The following example shows an API method invocation. It includes a query for harvested attributes of the JDBC connection pool named MyPool, within an interval between a timeStampFrom (inclusive) and a timeStampTo (exclusive):

  WLDFDataAccessRuntimeMBean.retrieveDataRecords(timeStampFrom, 
    timeStampTo, "TYPE='JDBCConnectionPoolRuntime' AND NAME='MyPool'")

For complete documentation about the WLDF Data Accessor, see Accessing Diagnostic Data With the Data Accessor.

 


Creating Log Filter Expressions

The query language can be used to filter what is written to the server log. The variables used to construct a log filter expression represent the columns in the log:

Note: These are the same variables that you use to build a Data Accessor query for retrieving historical diagnostic data from existing server logs.

For complete documentation about the WebLogic Server logging services, see “Filtering WebLogic Server Log Messages” in Configuring Log Files and Filtering Log Messages.

 


Building Complex Expressions

You can build complex query expressions using sub-expressions containing variables, binary comparisons, and other complex sub-expressions. There is no limit on levels of nesting. The following rules apply:


  Back to Top       Previous  Next