使用EBS日志功能
Posted on January 9, 2010
目前,EBS系统中存在多种日志记录方式,有用于PL/SQL的,有用于Java的,有OAF等开发框架自带的,也有Forms Server之类服务器专用的诊断方式。通常来讲,所有二次开发,为了统一规范和便于管理,应当将将客户化系统中日志记录和Oracle EBS中的日志记录进行整合,用统一的方式进行日志记录和诊断。
Oracle EBS调试日志级别
系统中将调试日志级别分为6个级别,分别是:
| Type | Level | Description |
|---|---|---|
| UNEXPECTED | 6 | 未知异常 |
| ERROR | 5 | 错误 |
| EXCEPTION | 4 | 异常 |
| EVENT | 3 | 事件 |
| PROCEDURE | 2 | 过程 |
| STATEMENT | 1 | 语句,该级别最低,记录的日志信息也最详细。 |
该级别通过配置文件 FND:调试日志级别 控制。
调试日志模块
日志必须指定当前所执行的程序,也就是所谓的模块。模块用于区分不用程序产生的日志,比如我的一套用于将EBS事件通过手机短消息发送出去的整套程序统一定义成日志模块:oracle.apps.cux.msg.transport。如此,不论是简单的PL/SQL、Form或并发程序产生的短信内容,都可以作为一个整体进行日志记录。模块名可以自行定义,该定义需要有意义,并能和其他程序明确区分。该特性由配置文件 FND:调试日志模块 控制。
不需要修改代码,诊断时可以根据需要随时启用或关闭调试日志,由配置文件 FND:启用调试日志 控制。
调用示例
先在程序中创建过程,如:
PROCEDURE trace(x_level IN NUMBER,
x_message IN VARCHAR2) IS
BEGIN
IF (x_level >= fnd_log.g_current_runtime_level) THEN
IF (fnd_log.test(x_level, 'oracle.apps.cux.msg.transport')) THEN
fnd_log.STRING(log_level => x_level,
module => 'oracle.apps.cux.msg.transport',
message => x_message);
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END trace;
然后用以下方式调用:
trace(fnd_log.level_procedure, 'Enter get_num');
日志查看
SELECT * FROM fnd_log_messages f WHERE f.user_id = 1113 AND f.log_sequence > 492519740 ORDER BY f.log_sequence;
对于普通的二次开发(一些较大的平台可能需要有自己的诊断方式),建议使用通过的方式记录日志,否则,如果各行其是,或者随手就自己设计一套日志记录方式的,当开发数量到达一定规模时,会让管理工作变得复杂。
题外:
这是早期时给团队中二次开发制订的相关规范的一部分,记在Confluence上。近日考虑撤出该平台,在角落里翻出来的一篇。另外,知识库的建设真是一项即简单又麻烦的工作……
Related Posts
» Filed Under E-Business Suite
Print This Post
Comments
Leave a Reply
