Wednesday, May 3, 2017

How to enable and retrieve FND debug log messages [ID 433199.1]



Starting in 11.5.10, FND has incorporated a debugging technique to enable debug messages to get stored into the table FND_LOG_MESSAGES. This method was introduced in 11.5.10 and it is available in subsequent releases. This note gives simple steps on how to enable and retrieve the debug messages.

This method will pick up *all* debug messages from a particular log_sequence value. As such, it is particularly useful when you are having trouble retrieving the debug messages associated to a particular concurrent request, or user. However, if there are multiple users with FND debugging enabled running various processes, you could end up picking up debug messages pertaining to their activities.
Solution
1) set up profiles for the User / Responsibility to be used to reproduce the issue

Profile Name     Suggested value     Comments
FND: Debug Log Enabled     YES     This turns the debugging feature on
FND: Debug Log Filename      NULL     Use when you want debug messages to get stored to a file
FND: Debug Log Level     STATEMENT   

Following are options listed from least to most detailed debugging :

Unexpected, Error, Exception, Event, Procedure, Statement

FND: Debug Log Module
    %   

Indicate what modules to debug. You can use something like 'ar%' or even  '%arp_rounding%' to limit modules debugged

Following are examples on how you would set the above profiles depending on what you want to debug :

sample setting to debug everything :

FND: Debug Log Enabled YES
FND: Debug Log Filename NULL
FND: Debug Log Level STATEMENT
FND: Debug Log Module %

sample setting to debug ONLY Receivables :

FND: Debug Log Enabled YES
FND: Debug Log Filename NULL
FND: Debug Log Level STATEMENT
FND: Debug Log Module ar%

2) Since the debugging routine will start writing messages to the table, we want to know which messages pertain to our test. If you are tracking the debug messages for a concurrent request, note down the Concurrent Request id. Otherwise, note down current max value of log sequence retrieved as follows :

SELECT MAX(LOG_SEQUENCE)
FROM FND_LOG_MESSAGES

3) Run your test case, try to stay on track in reproducing the issue and leave out extraneous steps so that you don't end up with debug messages that are not relevant to your issue. It is ideal to not have anyone else using the Responsibility you have enabled debug for, so that only messages pertaining to your testcase are picked up.

4) For ease of review by Development, spool the output of the following to a .xls spreadsheet :

a) If you are debugging a concurrent process :

SELECT log.module , log.message_text message
FROM fnd_log_messages log,
            fnd_log_transaction_context con
WHERE con.transaction_id = < request_id >
AND con.transaction_type = 'REQUEST'
AND con.transaction_context_id = log.transaction_context_id
ORDER BY log.log_sequence;

b) Otherwise,

SELECT module, message_text
FROM fnd_log_messages
WHERE log_sequence > &max_log_from_step2
ORDER BY log_sequence;

Or you may select all columns with:

SELECT * FROM fnd_log_messages
WHERE log_sequence > &max_log_from_step2
ORDER BY log_sequence;

No comments:

Post a Comment

How to improve blog performance

Improving the performance of a blog can involve a variety of strategies, including optimizing the website's technical infrastructure, im...