之前每个模块记录日志的方式都不同,都会把日志写到不同的文件中,对于User来说很麻烦,需要记住很多的配置,现在越来越多的模块使用FND Logging来存储日志,比如WIP,RCV,OAF...FND Debug Log会把Apps的日志输出到FND_LOG_MESSAGES表里。
怎样收集FND的日志
Step 1 profile设置(user级)
FND: Debug Log Level,这个level,可以设置为Unexpected,Error,Exception,Event,Procedure或者Statement,一般情况下设置Log Level为"Statement" level。
FND: Debug Log Enabled 设置为Yes
FND: Debug Log Module 设置为 %,如果你大概知道你的问题是那个模块下的问题,你可以设置这个profile为po%,hr%,fnd%,WIP%...这样收集的日志会更少,也更容易分析。
补充:设置为statement的好处,它会记录所有的日志,如果你只想查看Error的日志,那么你可以在查询语句中限定log_level=5,那么只会输出error级别的日志。
UNEXPECTED:Level Id = 6
ERROR :Level Id = 5
EXCEPTION :Level Id = 4
EVENT :Level Id = 3
PROCEDURE :Level Id = 2
STATEMENT :Level Id = 1
Step 2 重现你的问题
Step 3 从fnd_lot_messages表中收集日志
SELECT *
FROM fnd_log_messages
WHERE user_id = 209122 /*your FND_USER user_id here*/
AND TIMESTAMP > SYSDATE - .3
ORDER BY log_sequence
注意:如果你要收集Concurrent Request的日志,可以用下边的SQL查fnd的日志
select module, to_char(timestamp,'DD-MON-YYYY HH24:MI:SS'), message_text
from fnd_log_messages
where timestamp > sysdate - 2/24
and process_id = ( select os_process_id from fnd_concurrent_requests where request_id = &request_id)
and module like 'po%'
什么样的日志会记录到fnd_log_messages表中
使用fnd_log.STRING(log_level => fnd_log.level_statement,module => 'xxpo.packagename.procedurename',message => 'debug message here');记录的日志,在会在fnd_log_messages表中才能查到。到现在为止还有很多模块不是用fnd_log.STRING的方式来记录日志,还在使用utl_file.put_line来写日志到一个文件,比如inv模块。
如果业务回滚了,那么记录到fnd_log_messages表中的日志是否也会回滚
不会,fnd_log.string调用的procedure定义为pragma
AUTONOMOUS_TRANSACTION (自治事务)里边有commit.所以日志不会被回滚掉。
清理fnd_log_messages表
fnd_log_messages表如果太大,肯定会影响性能,所以最好定期清理这张表,Oracle官方提供了一个program去清理这张表。11i这个program叫"Purge Debug Log and System Alerts",R12里改名字了,叫"Purge Logs and Closed System Alerts",需要在system admin职责下运行,这个program默认是scheduled to run daily,并清理7天前的log数据。program会清理以下这些表:
FND_EXCEPTION_NOTES;
FND_OAM_BIZEX_SENT_NOTIF;
FND_LOG_METRICS;
FND_LOG_UNIQUE_EXCEPTIONS;
FND_LOG_EXCEPTIONS;
FND_LOG_MESSAGES;
FND_LOG_TRANSACTION_CONTEXT;
FND_LOG_ATTACHMENTS
这些表都是包含debug或者error信息。
转载请注明出处:http://blog.csdn.net/pan_tian/article/details/7688987
====EOF====
分享到:
相关推荐
* fnd_flex_value_sets * fnd_flex_values * fnd_flex_values_vl ----弹性域 * fnd_id_flexs * fnd_id_flex_structures where id_flex_code=""GL#"" * fnd_id_flex_segments where id_flex_code=""GL#"" and id...
FND_MESSAGE PACKAGE 这个包是使用 消息字典 api
Directory: VHDL-FPGA-VerilogPlat: VHDLSize: 27KB
1 手动提交Request 在Form里面,我们可以用 APPS.FND_REQUEST.SUBMIT_REQUEST 提交一个Request到Oracle Request Manager。 如果提交成功,该函数返回Request ID,否则,返回0。
Hi, This is Verilog practice code
今天学到在系统中定义的消息不仅可以当作普通的消息来引用展示(如文章以下所有内容),还可以把它当作一个固定变量来使用 ,通过使用FND_MESSAGE.SET_NAME和FND_MESSAGE.GET。 例如以下代码是把系统中定义的GME_...
--创建触发器 create or replace trigger trigger_customerLink before insert on customerLink_table for each row when (new.id is null) begin select seq_link_id.nextval into:new.id from dual;...
揭开FND函数的神秘面纱 FND {POPID|LOADID|VALID}外部关键字引用弹性域(定義彈性域值集時會用到) FND FLEXSQL 动态组建SQL语句,并根据提供的参数进行查询 FND FLEXIDVAL 来格式化数据并显示在报表上面 FND...
Controlling a FND Source
SOA Using Java Web Services 英文版原文
EN_ITIL4_FND_考试样卷答案及解析
用vc编写的关于模态和非模态的实例,对学习模态和非模态
EBS_FND_单据序列和序列分配API开发,包括详细的代码(建表/验证数据/塞入正是表等)。
File find componet for delphi
OracleEBSFlexField弹性域技术专题
此针对于oracle ebs的值集进行详细的讲解
详细阐述欧拉法解微分方程组的编程过程,相对于使用ode函数,更能体现到控制运行的机制。
fnd.js fnd.js是旨在在现代浏览器中使用的面向性能的DOM选择器微库。 它使用querySelectorAll但在可能的情况querySelectorAll退(仍然)具有更高的性能getElementsByTagName , getElementsByClass和getElementById ...
Oracle 主要配置文件介绍:profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件
EBS 并发请求