Skip to main content
Skip table of contents

Debugging errors using Jazz / CLM / ELM log files

Depending on the situation you’re analyzing, you may enable different loggers. Here are some recommendations we have found valuable over the past years doing support for OSLC Connect for Jira.

Prepare your logs with some specific notes

When doing debug sessions, it’s always valuable to easily identify what actions were undertaken when a specific log message appears. The start of the session deserves a specific notice, as would any action that one would perform, e.g. the last click before a given problem appears or the modification of a specific configuration key. This will help review the logs immediately after the session, but also will help with retaining a certain level of understanding weeks on months later.

Since IBM does not offer the same level of features as does Atlassian in their Jira product, we have to resort to using administrator tricks here! Our suggestion for this is to:

  • identify which files you wish to supervise

  • log into these files with the following script (choose one that matches your system)

Linux
CODE
#!/bin/sh
for i in "${@:2}"
do
    echo -ne "\n\n\n**** ${1}\n\n" >> ${i}  # mark the nth log file
done
exit

Create the marklogs.sh file inside the logs folder (typically <JazzTeamServer installation dir>/server/liberty/servers/clm/logs then make it executable (using chmod u+x marklogs.sh). You can then mark any log file by specifying the comment as the first argument, and every log file you want to impact as subsequent arguments:

CODE
./marklogs.sh "Starting the OSLC debug session" ldx.log ldx-internalSso.log
Windows (Powershell)
CODE
$log_mark=$args[0];
for ($i = 1; $i -lt $args.count; $i++) {
    $logfile = $args[$i];
    Add-Content "$logfile" "`n`n`n*** $log_mark`n`n";
}

Create the marklogs.ps1 file inside the logs folder (typically <JazzTeamServer installation dir>\server\liberty\servers\clm\logs. You can then mark any log file by specifying the comment as the first argument, and every log file you want to impact as subsequent arguments:

CODE
.\marklogs.ps1 "Starting the OSLC debug session" ldx.log ldx-internalSso.log
Windows (Batch)
CODE
@echo off
setlocal enabledelayedexpansion
set argCount=0

for %%x in (%*) do (
   set /A argCount+=1
   set "argVec[!argCount!]=%%~x"
)

for /L %%i in (2,1,%argCount%) do (
   (echo:& echo:& echo:& (echo *** %~1)& echo:& echo:)>>"!argVec[%%i]!""
)

Create the marklogs.bat file inside the logs folder (typically <JazzTeamServer installation dir>\server\liberty\servers\clm\logs. You can then mark any log file by specifying the comment as the first argument, and every log file you want to impact as subsequent arguments:

CODE
marklogs.bat "Starting the OSLC debug session" ldx.log ldx-internalSso.log

The result will look like this:

CODE
2021-11-05 04:57:51,903 [Default Executor-thread-678099 @@ 04:57 patricia <Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0@10.100.2.223> /ccm/proxy]  WARN net.jazz.ajax.service/ProxyOperation                - The target https://ulm-jira-7.sodius.cloud:4430/rest/oslc/1.0/rootservices is not local and not registered as a friend



*** Starting the OSLC debug session

<new logs will appear here>

Decide on what to review

Review incoming requests to ELM

You should do that if your OSLC Connect application is experiencing problems interacting with ELM.

Incoming requests are visible in the HTTP access log. This access log is provided by Liberty and can be enabled as described at Jazz.net. Concretely, we recommend that you enable the access log on the targeted endpoint. A good value for the access log format would typically give out the following configuration block to update in the default server.xml:

NONE
<httpEndpoint id="defaultHttpEndpoint"
    host="*"
    httpPort="9080"
    httpsPort="9443" >
  <accessLogging filepath="${server.output.dir}/logs/http_defaultEndpoint_access.log"
    logFormat='%h %u %t "%r" %s %b Cookie=%C %{User-agent}i %{Referer}i Authorization=%{Authorization}i Accept=%{Accept}i Content-Type=%{content-type}o Set-Cookie=%{set-cookie}o' />
</httpEndpoint>

To better understand the log format and customize it to your needs, you may want to review this article.

For an advanced access log format, you can expand this section.

HTTP headers retained in the following suggested example were taken from here.

CODE
logFormat="'%h' '%u' '%t' '%D' '%r' '%s' '%B' '%m' '%U' '%q' '%a' '%A' '%C' '%{Referer}i' '%{User-Agent}i' '%{Cookie}i' '%{Authorization}o' '%{Set-Cookie}i' '%{oslc_config.context}i' '%{OSLC-Core-Version}i' '%{Content-Length}i' '%{Accept}i' '%{Content-Type}i' '%{If-Match}i' '%{If-Modified-Since}i' '%{X-If-Modified-Since-XSD}i' '%{Forwarded}i' '%{X-Forwarded-For}i' '%{Location}o' '%{Content-Location}o' '%{Content-Disposition}o' '%{eTag}o' '%{x-com-sodius-logout-url}o' '%{x-com-sodius-logout-method}o' '%{X-com-sodius-oauth-redirect-location}o' '%{X-com-ibm-team-repository-web-auth-msg}o' '%{X-Sodius-Resource}o' '%{WWW-Authenticate}o' '%{Last-Modified}o' '%{Access-Control-Allow-Origin}o' '%{Vary}o' '%{Origin}o' '%{X-Frame-Options}o' '%{Content-Security-Policy}o'"

Which gives out the following log:

CODE
'10.100.99.5' '-' '[16/Jun/2020:07:41:36 +0200]' '628158' 'GET /secollab/web/clm/review/67082340-c545-4c86-acd7-7cd1ea2fda08/finalize?oslc_config.context=https:%2F%2Fclm-605.sodius.cloud:9443%2Fsecollab%2Fclm%2Fservices%2Fconfig%2Fstream%2F213e8151-5010-4722-a996-d1f64df4944e HTTP/1.1' '307' '0' 'GET' '/secollab/web/clm/review/67082340-c545-4c86-acd7-7cd1ea2fda08/finalize' '?oslc_config.context=https:%2F%2Fclm-605.sodius.cloud:9443%2Fsecollab%2Fclm%2Fservices%2Fconfig%2Fstream%2F213e8151-5010-4722-a996-d1f64df4944e' '10.100.99.5' '10.100.2.102' 'JSESSIONID:0000Voxgdm9kVpWRykb_1CGRSVN:5c53c125-1133-4b4d-ba65-e9e16fe6471e LtpaToken2:fjhBhxSwdPdirZzMIvZrff57j4FlS+lk/AtmCinLpdV/MER1cRHFvfAU2yrQF/YbxHEEZOKBDrrgN2BDEuOMkgVJBIjBOmM7pnioeXweRou7h9RnMMYdeCy2ePd02Ix8n8i2pUZyrfwd55apC6rQLsWIZFWjJN9lpRZrrIq5Ok3vsKsIzfv9idGIJpFhOUx6jTQuqfVOpYX4wpJ+jUuHYTDu6slRDe9pQBlw7OT5qWn8TW59WeKDVXrtFbWRo7POvNEfH1uEd4Ec3RBc5bxihsWPnKPL3eGGmLuFsaxatkMNgJkCKd5HUwAgz3YGRXeb' '-' 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0' 'JSESSIONID=0000Voxgdm9kVpWRykb_1CGRSVN:5c53c125-1133-4b4d-ba65-e9e16fe6471e; LtpaToken2=fjhBhxSwdPdirZzMIvZrff57j4FlS+lk/AtmCinLpdV/MER1cRHFvfAU2yrQF/YbxHEEZOKBDrrgN2BDEuOMkgVJBIjBOmM7pnioeXweRou7h9RnMMYdeCy2ePd02Ix8n8i2pUZyrfwd55apC6rQLsWIZFWjJN9lpRZrrIq5Ok3vsKsIzfv9idGIJpFhOUx6jTQuqfVOpYX4wpJ+jUuHYTDu6slRDe9pQBlw7OT5qWn8TW59WeKDVXrtFbWRo7POvNEfH1uEd4Ec3RBc5bxihsWPnKPL3eGGmLuFsaxatkMNgJkCKd5HUwAgz3YGRXeb' '-' '-' '-' '-' 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' '-' '-' '-' '-' '-' '-' 'https://clm-605.sodius.cloud:9443/ccm/oauth-authorize?oauth_token=fdfb3353c8ae4387880b5e63aa6095f4' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-'

Log parameters used in this recommandation are:

  • %h Remote host

  • %u Remote user according to the WebSphere Application Server specific $WSRU header

  • %t NCSA format of the start time of the request

  • %D The elapsed time of the request - millisecond accuracy, microsecond precision

  • %r First line of the request

  • %s Status code of the response

  • %B Response size in bytes excluding headers. 0 is printed instead of - if no value is found.

  • %m Request method

  • %U URL Path, not including the query string

  • %q Output the query string with any password escaped

  • %a Remote IP address

  • %A Local IP address

  • %C Cookie

Retained HTTP request headers are:

  • Referer

  • User-Agent

  • Authorization

  • Cookie

  • Set-Cookie

  • oslc_config.context

  • OSLC-Core-Version

  • Content-Length

  • Accept

  • Content-Type

  • If-MatchIf-Modified-Since

  • X-If-Modified-Since-XSD

  • Forwarded

  • X-Forwarded-For

Retained HTTP response headers are:

  • Location

  • Content-Location

  • Content-Disposition

  • eTag

  • x-com-sodius-logout-url

  • x-com-sodius-logout-method

  • X-com-sodius-oauth-redirect-location

  • X-com-ibm-team-repository-web-auth-msg

  • X-Sodius-Resource

  • WWW-Authenticate

  • Last-Modified

  • Access-Control-Allow-Origin

  • Vary

  • Origin

  • X-Frame-Options

  • Content-Security-Policy

  • Downstream-Auth

To make use of the output in Excel:

  • Copy the below header line to the first line of an Excel Sheet

CODE
'Remote host' 'Remote user' 'Request start time' 'Request log time' 'Request duration' 'Request 1st line' 'Status' 'Response size' 'Method' 'URL' 'Query string' 'Cross Component Tracing (XCT) Context ID' 'Remote IP addr' 'Local IP addr' 'Cookie' 'i_Referer' 'i_User-Agent' 'i_Authorization' 'i_Cookie' 'i_Set-Cookie' 'i_oslc_config.context' 'i_OSLC-Core-Version' 'i_Content-Length' 'i_Accept' 'i_Content-Type' 'i_If-Match' 'i_If-Modified-Since' 'i_X-If-Modified-Since-XSD' 'i_Forwarded' 'i_X-Forwarded-For' 'o_Location' 'o_Content-Location' 'o_Content-Disposition' 'o_eTag' 'o_x-com-sodius-logout-url' 'o_x-com-sodius-logout-method' 'o_X-com-sodius-oauth-redirect-location' 'o_X-com-ibm-team-repository-web-auth-msg' 'o_X-Sodius-Resource' 'o_WWW-Authenticate' 'o_Last-Modified' 'o_Access-Control-Allow-Origin' 'o_Vary' 'o_Origin' 'o_X-Frame-Options' 'o_Content-Security-Policy'
  • Copy the lines you want to investigate to the 2nd+ line of the Excel Sheet

if the copied header or lines are not automatically expanded to columns

  1. Select column Accept

  2. In the "Data" banner, click the button called "Text to Column"

  3. Choose "delimited", then Next

Review outgoing requests sent by ELM, or the ELM processing

Depending on the applications installed, there can be 2 ways to set up additional application logs

For RM…

Navigate to https://server:9443/rm/admin#action=com.ibm.rdm.fronting.server.web.logging.

Click on Configure Loggers, then find the logger you want to change and click on the log level you want to set.

For any ELM application…

  1. On Jazz server, edit the file at <JazzTeamServer installation dir>\server\conf\<app>\log4j.properties

  2. Update the content of the file (see examples below) and save it

  3. Reload the logging settings:

    1. For all apps but LQE/LDX, navigate in a browser to: https://server:9443/<app>/admin?internal=true#action=com.ibm.team.repository.admin.reloadLoggingSettings

    2. For LQE/LDX, go to https://server:9443/lqe/web/admin/data-sources → Advanced Properties

  4. Click the Reload Log Settings button

  5. Download the log files as explained below

Reviewing outgoing requests

To debug ELM outgoing requests, add the following lines in Log4j configuration:

CODE
log4j.logger.org.apache.http=DEBUG

Reviewing ELM processing

  • To debug link discovery in DNG, add the following lines to RM’s Log4J configuration:

CODE
log4j.logger.com.ibm.rdm.fronting.server.services.discoveredlinks=DEBUG
log4j.logger.com.ibm.rdm.fronting.server.services.linkindexprovider=DEBUG
log4j.logger.com.ibm.team.links=DEBUG
  • To debug LQE HTTP requests to TRS feeds, add the following line in Log4j configuration:

CODE
log4j.logger.com.ibm.team.integration.lqe.lib.trsparser.ITRS=TRACE

Where to review

You will always review the file corresponding to the application where you have enabled specific logs. The below table lists most of them.

Log File

Name (v6)

Name (v7)

ccm.log

RTC

Rational Team Concert

EWM

Engineering Workflow Management

rm.log

DNG

Rational DOORS Next Generation

DOORS Next

Engineering Requirements Management DOORS Next

qm.log

RQM

Rational Quality Manager

ETM

Engineering Test Management

gc.log

GCM

Global Configuration Manager

GCM

Global Configuration Manager

ldx.log

LDX

Link Indexer

LDX

Link Indexer

lqe.log

LQE

Lifecycle Query Engine

LQE

Lifecycle Query Engine

relm.log

RELM

Rational Engineering Lifecycle Management

EI

Engineering Insight

rs.log

RS

Report Builder

RS

Report Builder

Finishing the debug session

Restore your system’s previous logging features

You definitely want to mark your logs using the marklogs.sh script, e.g.

CODE
./marklogs.sh "Completed OSLC debug session" ldx.log ldx-internalSso.log

Then to avoid flooding your system with logs, you also want to undo the changes you have made during the debug session. This can be done by commenting out any line added in the log4j.properties files, prefixing them with a #.

Retrieving Jazz' server logs

From the RM admin page

Navigate to https://server:9443/rm/admin#action=com.ibm.rdm.fronting.server.web.logging.

From this page, you can either download or display in the browser any log file from the Jazz server.

From the Jazz server

Open the following file to see the log entries: 

<JazzTeamServer installation dir>/server/liberty/servers/clm/logs/<app>.log

There may be a number of log files ex. rm.log, rm.log1, rm.log2 etc. because when a log file becomes full a new one is created.

We suggest attaching the log file(s) to a Jira ticket on our customer support portal if you think these provide insight into the problem you have identified, or if they were requested.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.