[Home] [Help]
PACKAGE BODY: APPS.GMD_DEBUG
Source
1 PACKAGE BODY GMD_DEBUG AS
2 /* $Header: GMDUDBGB.pls 120.1 2006/01/18 15:09:10 sxfeinst noship $ */
3 /*
4 REM *********************************************************************
5 REM *
6 REM * FILE: GMDUDBGB.pls
7 REM * PURPOSE: Package Body for the GME debug utilities
8 REM * AUTHOR: Olivier DABOVAL, OPM Development
9 REM * DATE: 27th MAY 2001
10 REM *
11 REM * PROCEDURE log_initialize
12 REM * PROCEDURE log
13 REM *
14 REM *
15 REM * HISTORY :-
16 REM *
17 REM * 20-FEB-2004 NSRIVAST Bug# 3222090,Removed call to FND_PROFILE.VALUE('AFLOG_ENABLED')
18 REM * 12-AUG-2005 UPHADTAR Bug# 4576699 (FP of 4493387)
19 REM * Added code for getting the log file location and
20 REM * then logging messages on the basis of the Profile option.
21 REM **********************************************************************
22 */
23
24 /* Bug # 4576699 Declared two variables below for Global Variables */
25 -- Global variables
26 global_gmdlog_location VARCHAR2(300) := NULL;
27 global_file_name VARCHAR2(100) := NULL;
28
29 /* Bug # 4576699 End */
30
31
32 --========================================================================
33 -- PROCEDURE : Log_Initialize PUBLIC
34 -- COMMENT : Initializes the log facility. It should be called from
35 -- the top level procedure of each concurrent program
36 -- 20-FEB-2004 NSRIVAST Bug# 3222090,Removed call to FND_PROFILE.VALUE('AFLOG_ENABLED')
37 --=======================================================================--
38 PROCEDURE Log_Initialize
39 ( p_file_name IN VARCHAR2)
40 IS
41
42 l_location VARCHAR2(500);
43 LOG UTL_FILE.FILE_TYPE;
44
45 CURSOR c_get_1st_location IS
46 SELECT NVL( SUBSTR( value, 1, instr( value, ',')-1), value)
47 FROM v$parameter
48 WHERE name = 'utl_file_dir';
49
50
51
52
53 BEGIN
54 -- Bug# 3222090,20-FEB-2004 NSRIVAST , BEGIN
55 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
56 G_LOG_ENABLED := 'Y';
57 ELSE
58 G_LOG_ENABLED := 'N';
59 END IF;
60 -- Bug# 3222090,20-FEB-2004 NSRIVAST , END
61
62 G_LOG_LEVEL := TO_NUMBER(FND_PROFILE.Value('AFLOG_LEVEL'));
63 IF G_LOG_ENABLED = 'N' THEN
64 G_LOG_MODE := 'OFF';
65 ELSE
66 IF (TO_NUMBER(FND_PROFILE.Value('CONC_REQUEST_ID')) > 0) THEN
67 G_LOG_MODE := 'SRS';
68 ELSIF p_file_name <> '0' THEN
69 G_LOG_MODE := 'LOG';
70 ELSE
71 G_LOG_MODE := 'SQL';
72 END IF;
73 END IF;
74
75 IF (G_LOG_MODE <> 'OFF' AND p_file_name <> '0')
76 THEN
77 IF (FND_GLOBAL.user_id > 0)
78 THEN
79 G_LOG_USERNAME := FND_GLOBAL.user_name;
80 ELSE
81 G_LOG_USERNAME := 'GMD_NO_USER';
82 END IF;
83
84 OPEN c_get_1st_location;
85 FETCH c_get_1st_location
86 INTO G_LOG_LOCATION;
87 CLOSE c_get_1st_location;
88
89 LOG := UTL_FILE.fopen(G_LOG_LOCATION, G_LOG_USERNAME||p_file_name, 'w', 32767);
90 UTL_FILE.put_line(LOG, 'Log file opened at '||to_char(SYSDATE,'DD-MON-YYYY HH24:MI:SS')||' With log mode: '||G_LOG_MODE);
91 UTL_FILE.fflush(LOG);
92 UTL_FILE.fclose(LOG);
93 G_FILE_NAME := p_file_name;
94 END IF;
95
96 /* Bug # 4576699 Added code below for checking the Profile option and then logging messages */
97 IF (p_file_name IS NOT NULL) AND (NVL(fnd_profile.value('GMD_DEBUG_ENABLED'),'N') = 'Y') THEN
98
99 global_file_name := p_file_name;
100
101 OPEN c_get_1st_location;
102 FETCH c_get_1st_location
103 INTO global_gmdlog_location;
104 CLOSE c_get_1st_location;
105
106 LOG := UTL_FILE.fopen(global_gmdlog_location, global_file_name, 'w');
107 UTL_FILE.put_line(LOG, 'Debug log file opened: '||TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'));
108 UTL_FILE.fflush(LOG);
109 UTL_FILE.fclose(LOG);
110 END IF;
111 /* Bug # 4576699 End */
112
113
114 -- B3027135 Add Exception Handler
115 EXCEPTION
116 WHEN OTHERS THEN
117 Null;
118
119 END Log_Initialize;
120
121
122 --========================================================================
123 -- PROCEDURE : Log PUBLIC
124 -- PARAMETERS: p_level IN priority of the message - from
125 -- highest to lowest:
126 -- -- G_LOG_ERROR
127 -- -- G_LOG_EXCEPTION
128 -- -- G_LOG_EVENT
129 -- -- G_LOG_PROCEDURE
130 -- -- G_LOG_STATEMENT
131 -- p_msg IN message to be print on the log
132 -- file
133 -- COMMENT : Add an entry to the log
134 --=======================================================================--
135 PROCEDURE put_line
136 ( p_msg IN VARCHAR2
137 , p_priority IN NUMBER
138 , p_file_name IN VARCHAR2
139 )
140 IS
141
142 LOG UTL_FILE.FILE_TYPE;
143 l_file_name VARCHAR2(50);
144
145 CURSOR c_get_1st_location IS
146 SELECT NVL( SUBSTR( value, 1, instr( value, ',')-1), value)
147 FROM v$parameter
148 WHERE name = 'utl_file_dir';
149
150 -- Bug 4576699: added l_log
151 l_log UTL_FILE.file_type;
152
153 BEGIN
154 IF ((G_LOG_MODE <> 'OFF') AND (NVL(p_priority, 100) >= G_LOG_LEVEL))
155 THEN
156 IF G_LOG_MODE = 'LOG'
157 THEN
158 IF p_file_name = '0'
159 THEN
160 l_file_name := G_FILE_NAME;
161 ELSE
162 l_file_name := p_file_name;
163 END IF;
164
165 LOG := UTL_FILE.fopen(G_LOG_LOCATION, G_LOG_USERNAME||l_file_name, 'a', 32767);
166 UTL_FILE.put_line(LOG, p_msg);
167 UTL_FILE.fflush(LOG);
168 UTL_FILE.fclose(LOG);
169
170 ELSIF (G_LOG_MODE = 'SQL')
171 THEN
172 -- SQL*Plus session: uncomment the next line during unit test
173 --DBMS_OUTPUT.put_line(p_msg);
174 NULL;
175 ELSE
176 -- Concurrent request
177 FND_FILE.put_line
178 ( FND_FILE.log
179 , p_msg
180 );
181 END IF;
182 END IF;
183
184 /* Bug # 4576699 Added code below for checking the Profile option and then logging messages */
185 IF (global_file_name IS NOT NULL) AND (NVL(fnd_profile.value('GMD_DEBUG_ENABLED'),'N') = 'Y') THEN
186
187 IF global_gmdlog_location is NULL THEN
188 OPEN c_get_1st_location;
189 FETCH c_get_1st_location
190 INTO global_gmdlog_location;
191 CLOSE c_get_1st_location;
192 END IF;
193
194 l_log := UTL_FILE.fopen(global_gmdlog_location, global_file_name, 'a');
195 IF UTL_FILE.IS_OPEN(l_log) THEN
196 UTL_FILE.put_line(l_log, p_msg);
197 UTL_FILE.fflush(l_log);
198 UTL_FILE.fclose(l_log);
199 END IF;
200 END IF;
201 /* Bug # 4576699 End*/
202
203
204 -- B3027135 Add Exception Handler
205 EXCEPTION
206 WHEN OTHERS THEN
207 Null;
208
209 END put_line;
210
211 PROCEDURE display_messages
212 ( p_msg_count IN NUMBER
213 ) IS
214 message VARCHAR2(400);
215 dummy NUMBER;
216 BEGIN
217 FOR i IN 1..p_msg_count LOOP
218 fnd_msg_pub.get
219 (
220 p_msg_index => 1,
221 p_data => message,
222 p_encoded => 'F',
223 p_msg_index_out => dummy
224 );
225 gmd_debug.put_line('Message '||to_char(p_msg_count)||' '||message);
226 END LOOP;
227
228 END display_messages;
229
230 END GMD_DEBUG;