您的位置:首页 > 其它

调用function 的时候日志没有打印在INV log 里面

2014-05-06 18:27 183 查看
inv_log_util.trace('P_SUBINV_LO='||P_SUBINV_LO, 'INV_INVTRREG_XMLP_PKG', 9);


INV log level 设成 11 就可以收集到日志了;

今天遇到了一个小问题, 我用下面的代码调用一个function 的时候, 里面的日志没有打印在INV log 里面. 折腾了好久.

SET serveroutput ON;
DECLARE
a VARCHAR2(100);
BEGIN
mo_global.set_policy_context('S', 204);
FND_GLOBAL.APPS_INITIALIZE (
1068     -- user_id
,56229    -- resp_id
,724      -- resp_appl_id
);
a := inv_material_status_grp.is_status_applicable('TRUE' , NULL ,36 , NULL ,'N' , 207 ,212990 ,NULL ,NULL ,NULL ,'S-1000' , 'S' );
IF a = 'Y' THEN
DBMS_OUTPUT.PUT_LINE('a is y' );
END IF ;
END ;


BEGIN
mo_global.set_policy_context('S', 204);
FND_GLOBAL.APPS_INITIALIZE (
1068     -- user_id
,56229    -- resp_id
,724      -- resp_appl_id
);
END;


在 inv_material_status_grp.is_status_applicable 是有打印日志的语句的

IF(g_debug = 1)THEN
inv_trx_util_pub.TRACE('inside yu mark 11 ', 'INV_MATERIAL_STATUS_GRP', 14);
END If;

但是却打印不出来. 为什么捏?

原因可能是 inv debug level 设置的不够, 要设置15 才行.

我们看INV_QUANTITY_TREE_PVT 这个package 里面, 定义了一个过程:

PROCEDURE print_debug(p_message IN VARCHAR2, p_level IN NUMBER DEFAULT 14) IS
g_debug NUMBER;
BEGIN
IF g_debug IS NULL THEN
g_debug :=  NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
END IF;

IF (g_debug = 1) THEN
inv_log_util.trace(p_message, 'INV_QUANTITY_TREE_PVT', p_level);
END IF;
END;
print_debug 这个过程定义的时候默认了level 是14, 这就意味着如果设置的profile: inv debug level 不够14 的话, 这些日志就不会打印出来.

于是我把 debug level 设置到了15, 再次尝试运行上面的脚本, 还是不行... 为神马咧?

搞不清楚为什么, 反正断开数据库, 重新连接就ok 了. 有可能是因为数据库连接缓存的问题吧.

再运行, 就可以收集到日志了, 如下

Session Id:16303560
[06-5月 -14 03:23:18] INV_MATERIAL_STATUS_GRP: inside non-overloaded is_status_applicable
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐