FND Debug Log

download FND Debug Log

of 4

Transcript of FND Debug Log

  • 8/4/2019 FND Debug Log

    1/4

    FND Debug Log - Debugging Oracle AppscodeWritten by Anil Passi

    Sunday, 19 November 2006There was a time when every individual Oracle Applications module used its own debugging technique.

    But this is changing now, thanks to FND Logging. I have been using FND Logging for over one year now11.5.10 was released, hence I would like to share knowledge on this topic.

    What is the use of FND Debug Log?

    1. It helps you pinpoint the cause of error in standard Oracle Code, by making debug messages to appeartable named FND_LOG_MESSAGES.

    2. You can design and build your custom extensions in a manner that can easily be debugged. This can b

    Oracle delivered APIs in your custom code.

    Where is the debug message stored, once the logging is turned on?

    Debug messages are stored in a table called FND_LOG_MESSAGESA program written in any technology, either form, or report, or pl/sql or java concurrent program or OAF

    messages will be stored in fnd_log_messages.

    How to debug the issue being faced in Oracle Application?

    Step 1 Set the following profile options at your user level(your fnd_user)

    FND: Debug Log Level

    Following possible values are available, but I suggest you set this to "Statement" level when debugging c

    LEVEL_UNEXPECTED : Internal Level Id is 6LEVEL_ERROR : Internal Level Id is 5

    LEVEL_EXCEPTION : Internal Level Id is 4

    LEVEL_EVENT : Internal Level Id is 3LEVEL_PROCEDURE : Internal Level Id is 2

    LEVEL_STATEMENT : Internal Level Id is 1

    FND: Debug Log Enabled

  • 8/4/2019 FND Debug Log

    2/4

    Set this profile to Yes

    FND: Debug Log Module

    Set this to %

    Step 2Login to the application and reproduce the problem.

    Step 3

    SELECT *

    FROM fnd_log_messages

    WHERE user_id = 209122 /*your FND_USER user_id here*/AND TIMESTAMP > SYSDATE - .3

    ORDER BY log_sequence DESC /*note the order by clause here*/

    The result of this select statement will provide the list of all the debug messages, on top will appear the mmessages..

    Why should I setup the module name to %, in profile option?

    You can set this to po%, if you know for sure that the error was caused by code written in po module. Homight be internally calling hr code which might inturn be calling fnd code.

    Hence its best to set this profile value as %.

    You may also use comma delimited values i.e po%,hr%,fnd%

    Why must I bother debugging Oracle's Standard code when I can quickly raise a tar.If the issue is with Standard Oracle Code, first thing you must do is to search into Metalink. However havinformation on error helps your searching ability further. Uploading the debug messages upfront during T

    also help Oracle speedily understand and fix your issues.

    Why to set the profile option to statement level?

    This profile option has following main levels.-Error

    Warning

    Procedure

    Statement

    I like setting this to "Statement" level as it extracts debug messages at all levels, in one glance. You can l

    debug messages by using below SQL for exampleselect * from fnd_log_messages where user_id = 111 and LOG_LEVEL =5

    What if the piece of code causing the error is not appearing in fnd_log_messages?

  • 8/4/2019 FND Debug Log

    3/4

    This is very much possible. The fnd_log_messages might have helped you get close to the culprit piece o

    not be able to pinpoint the error as there may not be enough debug messages implanted by Oracle.

    You can do one of the below:-

    A. Run the database sql trace for the session with bind variables and see the last meaningful SQL stateme

    trace file.

    Please note that PL/SQL statements will not appear in trace, only the SQL Statements will appear, henceconsider option (b) below

    B. Add your own debug messages to the pl/sql code that was delivered by oracle, which you suspect is ca

    This is a temporary change, and must only be done on development environment, NEVER DO THIS CHPRODUCTION.

    The size of table FND_LOG_MESSAGES will keep on increasing?

    You can run concurrent program Purge Debug Log and System Alerts.

    I have written a pl/sql concurrent process to interface Purchase Orders from 3rd Party System. Ho

    debug messages?

    fnd_log.STRING(log_level => fnd_log.level_statement,module => 'xxpo.packagename.procedurename'

    ,message => 'debug message here');

    Will the above debug command create an entry into fnd_log_messages ?

    Debug records will be created in fnd_log_messages if and only if you run the interface program after sett

    options as suggested above.

    What if a rollback occurs due to unhandled exception. Will the inserts done to fnd_log_messages be

    fnd_log.string eventually calls procedure FND_LOG.STRING_UNCHECKED_INTERNAL2. This pro

    pragma AUTONOMOUS_TRANSACTION with a commit.

    Hence your debug messages will not be lost despite a rollback in parent session.

    What if an exception is incurred within the Debug Logging API itself?

    Oracle takes well care of this by handling the WHEN OTHERS exception.It is evident from below Oracle Code for debug API

    PROCEDURE STRING(LOG_LEVEL IN NUMBER,MODULE IN VARCHAR2,MESSAGE IN VARCHAR2) is

    begin/* Short circuit if logging not turned on at this level */

    if (LOG_LEVEL < G_CURRENT_RUNTIME_LEVEL) then

    return;

  • 8/4/2019 FND Debug Log

    4/4

    end if;

    if FND_LOG_REPOSITORY.CHECK_ACCESS_INTERNAL (MODULE, LOG_LEVEL) then

    FND_LOG_REPOSITORY.STR_UNCHKED_INT_WITH_CONTEXT(LOG_LEVEL => LOG_LEVEL,

    MODULE => MODULE,

    MESSAGE_TEXT => MESSAGE);end if;

    exceptionwhen others then

    NULL; /* supress the exception */

    end;