[Home] [Help]
PACKAGE BODY: APPS.AHL_DEBUG_PUB
Source
1 PACKAGE BODY AHL_DEBUG_PUB AS
2 /* $Header: AHLPDEBB.pls 115.7 2003/08/04 18:56:54 sikumar noship $ */
3
4 --------------------------------------
5 -- declaration of private global varibles
6 --------------------------------------
7
8 -- file handler we will use for log file.
9 --G_FILE UTL_FILE.FILE_TYPE;
10
11 -- running in file debug mode.
12 --G_FILE_NAME VARCHAR2(100);
13 --G_FILE_PATH VARCHAR2(200);
14
15 -- running in normal debug mode by calling dbms_output.
16 --G_DBMS_DEBUG BOOLEAN := FALSE;
17
18 -- buffer size used by dbms_output.debug
19 --G_BUFFER_SIZE CONSTANT NUMBER := 1000000;
20 --G_MAX_LINE_SIZE_OF_FILE CONSTANT NUMBER := 1023;
21 --G_MAX_LINE_SIZE_OF_DBMS CONSTANT NUMBER := 255;
22
23 -- level of debug has been called.
24 --G_COUNT NUMBER := 0;
25 G_DEFAULT_MODULE_PREFIX CONSTANT VARCHAR2(80) := 'ahl.plsql.AHL_DEBUG_PUB.';
26
27 --------------------------------------
28 -- declaration of private procedures and functions
29 --------------------------------------
30 --PROCEDURE enable_file_debug;
31
32
33 /**
34 * PRIVATE PROCEDURE enable_file_debug
35 *
36 * DESCRIPTION
37 * Enables writing debug messages to a file.
38 * Requires file patch (directory), THIS SHOULD BE
39 * DEFINED IN INIT.ORA PARAMETER 'UTIL_FILE_DIR',
40 * file name (Any valid OS file name).
41 *
42 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
43 *
44 * ARGUMENTS
45 *
46 * NOTES
47 *
48 * MODIFICATION HISTORY
49 * sikumar obseleted.
50 *
51 *
52 */
53
54 /*PROCEDURE enable_file_debug IS
55
56
57 BEGIN
58 -- Open log file in 'append' mode.
59 IF NOT UTL_FILE.is_open( G_FILE ) THEN
60 G_FILE := UTL_FILE.fopen( G_FILE_PATH, G_FILE_NAME , 'a' );
61 UTL_FILE.put_line( G_FILE, '#######' );
62 END IF;
63
64 G_FILE_DEBUG := TRUE;
65 EXCEPTION
66 -- file location or name was invalid
67 WHEN UTL_FILE.INVALID_PATH THEN
68 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_PATH' );
69 FND_MESSAGE.SET_TOKEN( 'FILE_DIR', G_FILE_PATH );
70 FND_MSG_PUB.ADD;
71 G_FILE_DEBUG := FALSE;
72 G_COUNT := 0;
73 RAISE FND_API.G_EXC_ERROR;
74 -- the open_mode string was invalid
75 WHEN UTL_FILE.INVALID_MODE THEN
76 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_MODE' );
77 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
78 FND_MESSAGE.SET_TOKEN( 'FILE_MODE', 'w' );
79 FND_MSG_PUB.ADD;
80 G_FILE_DEBUG := FALSE;
81 G_COUNT := 0;
82 RAISE FND_API.G_EXC_ERROR;
83 -- file could not be opened as requested
84 WHEN UTL_FILE.INVALID_OPERATION THEN
85 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_OPERATN' );
86 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
87 FND_MESSAGE.SET_TOKEN( 'TEMP_DIR', G_FILE_PATH );
88 FND_MSG_PUB.ADD;
89 G_FILE_DEBUG := FALSE;
90 G_COUNT := 0;
91 RAISE FND_API.G_EXC_ERROR;
92 END enable_file_debug;*/
93
94 --------------------------------------
95 -- public procedures and functions
96 --------------------------------------
97
98 /**
99 * PROCEDURE enable_debug
100 *
101 * DESCRIPTION
102 * Enable file or dbms debug based on profile options.
103 * AHL_API_FILE_DEBUG_ON : Turn on/off file debug, i.e. debug message
104 * will be written to a user specified file.
105 * The file name and file path is stored in
106 * profiles AHL_API_DEBUG_FILE_PATH and
107 * AHL_API_DEBUG_FILE_NAME. File path must be
108 * database writable.
109 * AHL_API_DBMS_DEBUG_ON : Turn on/off dbms debug.
110 *
111 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
112 *
113 * ARGUMENTS
114 *
115 * NOTES
116 *
117 * MODIFICATION HISTORY
118 * sikumar made it new logging framework compatiable.
119 * commented out all the code for AHL specific logging
120 * no longer needed and should not be used.
121 *
122 */
123
124 PROCEDURE enable_debug IS
125
126 BEGIN
127
128 /*G_COUNT := G_COUNT + 1;
129
130 IF G_COUNT > 1 THEN
131 RETURN;
132 END IF;
133
134 IF FND_PROFILE.value( 'AHL_API_FILE_DEBUG_ON' ) = 'Y' THEN
135
136 G_FILE_NAME := NVL(FND_PROFILE.value( 'AHL_API_FILE_DEBUG_NAME' ), 'ahldebug.log');
137 G_FILE_PATH := FND_PROFILE.value( 'AHL_API_FILE_DEBUG_PATH' );
138 G_FILE_DEBUG := TRUE;
139 enable_file_debug;
140 ELSIF FND_PROFILE.value( 'AHL_API_DBMS_DEBUG_ON' ) = 'Y' THEN
141 -- Enable calls to dbms_output.
142 -- DBMS_OUTPUT.enable( G_BUFFER_SIZE );
143 G_DBMS_DEBUG := TRUE;
144
145 END IF;*/
146
147 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
148 G_FILE_DEBUG := TRUE;
149 END IF;
150
151 END enable_debug;
152
153 /**
154 * PROCEDURE disable_debug
155 *
156 * DESCRIPTION
157 * Disable file or dbms debug.
158 *
159 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
160 *
161 * ARGUMENTS
162 *
163 * NOTES
164 *
165 * MODIFICATION HISTORY
166 * sikumar made it new logging framework compatiable.
167 * no longer needed and should be used.
168 *
169 *
170 */
171
172 PROCEDURE disable_debug IS
173
174 BEGIN
175 RETURN;
176 /*G_COUNT := G_COUNT - 1;
177
178 IF G_COUNT > 0 THEN
179 RETURN;
180 END IF;
181
182 IF G_FILE_DEBUG THEN
183 IF UTL_FILE.is_open( G_FILE ) THEN
184 BEGIN
185 UTL_FILE.fclose( G_FILE );
186 G_FILE_DEBUG := FALSE;
187 EXCEPTION
188 WHEN UTL_FILE.INVALID_FILEHANDLE THEN
189 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_HANDLE' );
190 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
191 FND_MSG_PUB.ADD;
192 G_FILE_DEBUG := FALSE;
193 G_COUNT := 0;
194 RAISE FND_API.G_EXC_ERROR;
195
196 WHEN UTL_FILE.WRITE_ERROR THEN
197 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_WRITE_ERROR' );
198 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
199 FND_MSG_PUB.ADD;
200 G_FILE_DEBUG := FALSE;
201 G_COUNT := 0;
202 RAISE FND_API.G_EXC_ERROR;
203 END;
204 END IF;
205 ELSIF G_DBMS_DEBUG THEN
206 G_DBMS_DEBUG := FALSE;
207 END IF;*/
208
209 END disable_debug;
210
211 /**
212 * PROCEDURE debug
213 *
214 * DESCRIPTION
215 * Put debug message.
216 *
217 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
218 *
219 * ARGUMENTS
220 * IN:
221 * p_message Message you want to put in log.
222 * p_prefix Prefix of the message. Default value is
223 * DEBUG.
224 * NOTES
225 *
226 * MODIFICATION HISTORY
227 * sikumar made it new logging framework compatiable.
228 * commented out all the code for AHL specific logging
229 *
230 */
231
232 PROCEDURE debug (
233 p_message IN VARCHAR2,
234 p_prefix IN VARCHAR2
235 ) IS
236
237 /*l_message VARCHAR2(4000);
238 l_len NUMBER;
239 l_times NUMBER;
240 l_prefix VARCHAR2(2000);
241 l_user_name VARCHAR2(30);
242 i NUMBER;
243 j NUMBER;
244
245 buffer_overflow EXCEPTION;
246 PRAGMA EXCEPTION_INIT(buffer_overflow, -20000);*/
247
248 BEGIN
249
250 /*l_len := LENGTH( p_message );
251
252 IF l_len + LENGTH( p_prefix ) + 3 > G_MAX_LINE_SIZE_OF_FILE THEN
253 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_MAXLINE' );
254 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
255 FND_MESSAGE.SET_TOKEN( 'MAXLINE', G_MAX_LINE_SIZE_OF_FILE );
256 FND_MSG_PUB.ADD;
257 G_FILE_DEBUG := FALSE;
258 G_COUNT := 0;
259 RAISE FND_API.G_EXC_ERROR;
260 END IF;
261 -- Retrieves the user name
262 l_user_name := fnd_global.user_name;
263 -- This is Required when the session is established outside of normal application connection
264 IF l_user_name IS NULL
265 THEN
266 SELECT OSUSER INTO l_user_name FROM v$session
267 WHERE audsid =
268 (SELECT userenv('SESSIONID') FROM DUAL);
269 END IF;
270 l_prefix := l_user_name ||':' ||to_char( sysdate, 'mm/dd/yy hh:mi:ss')|| '-' ||p_prefix;
271 --
272 l_message := l_prefix || ' - ' || p_message;
273
274 IF G_FILE_DEBUG THEN
275 BEGIN
276 UTL_FILE.put_line( G_FILE, l_message );
277 UTL_FILE.fflush( G_FILE );
278 EXCEPTION
279 -- file handle is invalid
280 WHEN UTL_FILE.INVALID_FILEHANDLE THEN
281 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_HANDLE' );
282 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
283 FND_MSG_PUB.ADD;
284 G_FILE_DEBUG := FALSE;
285 G_COUNT := 0;
286 RAISE FND_API.G_EXC_ERROR;
287 -- file is not open for writing/appending
288 WHEN UTL_FILE.INVALID_OPERATION THEN
289 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_INVALID_OPERATN' );
290 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
291 FND_MESSAGE.SET_TOKEN( 'TEMP_DIR', G_FILE_PATH );
292 FND_MSG_PUB.ADD;
293 G_FILE_DEBUG := FALSE;
294 G_COUNT := 0;
295 RAISE FND_API.G_EXC_ERROR;
296 -- OS error occured during write operation
297 WHEN UTL_FILE.WRITE_ERROR THEN
298 FND_MESSAGE.SET_NAME( 'FND', 'CONC-TEMPFILE_WRITE_ERROR' );
299 FND_MESSAGE.SET_TOKEN( 'TEMP_FILE', G_FILE_NAME );
300 FND_MSG_PUB.ADD;
301 G_FILE_DEBUG := FALSE;
302 G_COUNT := 0;
303 RAISE FND_API.G_EXC_ERROR;
304 END;
305 -- ELSIF G_DBMS_DEBUG THEN
306 -- l_times := CEIL( l_len/G_MAX_LINE_SIZE_OF_DBMS );
307 -- j := 1;
308 --
309 -- BEGIN
310 -- FOR i IN 1..l_times LOOP
311 -- DBMS_OUTPUT.put_line( SUBSTR( l_message, j, 255 ) );
312 -- j := j + 255;
313 -- END LOOP;
314 -- EXCEPTION
315 -- WHEN buffer_overflow THEN
316 -- G_DBMS_DEBUG := FALSE;
317 -- G_COUNT := 0;
318 -- NULL;
319 -- END;
320 END IF;*/
321
322 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
323 fnd_log.string
324 (
325 fnd_log.level_statement,
326 G_DEFAULT_MODULE_PREFIX || p_prefix ,
327 p_message
328 );
329 END IF;
330
331 END debug;
332
333 /**
334 * PROCEDURE log_app_messages
335 *
336 * DESCRIPTION
337 * Put log messages based on message count in message stack.
338 *
339 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
340 *
341 * ARGUMENTS
342 * IN:
343 * p_msg_count Message count in message stack.
344 * p_msg_data Message data if message count is 1.
345 * p_msg_type Message type used as prefix of the message.
346 *
347 * NOTES
348 *
349 * MODIFICATION HISTORY
350 * sikumar made it new logging framework compatiable.
351 *
352 *
353 */
354
355 PROCEDURE log_app_messages (
356 p_msg_count IN NUMBER,
357 p_msg_data IN VARCHAR2,
358 p_msg_type IN VARCHAR2
359 ) IS
360
361 i NUMBER;
362
363 BEGIN
364 IF p_msg_count <= 0 THEN
365 RETURN;
366 END IF;
367 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
368 IF p_msg_count = 1 THEN
369 debug( p_msg_data, p_msg_type );
370 ELSE
371 FOR i IN 1..p_msg_count LOOP
372 debug( FND_MSG_PUB.Get( p_encoded => FND_API.G_FALSE ), p_msg_type );
373 END LOOP;
374 --Resets the message table index to point to the top of the message table
375 --or the botom of the message table
376 FND_MSG_PUB.reset;
377 END IF;
378 END IF;
379
380 END log_app_messages;
381
382 /**
383 * Function is_log_enabled RETURNS 'Y' or 'N'
384 *
385 * DESCRIPTION
386 * Included for backward compatiablity to find out whether statement level logging is enabled.
387 *
388 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED *
389 *
390 * NOTES
391 *
395 *
392 * MODIFICATION HISTORY
393 *
394 *
396 */
397
398 FUNCTION is_log_enabled RETURN VARCHAR2 IS
399
400 BEGIN
401 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
402 RETURN 'Y';
403 ELSE
404 RETURN 'N';
405 END IF;
406 END is_log_enabled;
407
408
409 END AHL_DEBUG_PUB;