1 PACKAGE BODY PO_DEBUG AS
2 -- $Header: POXDBUGB.pls 120.1 2005/06/29 19:29:55 shsiung noship $
3
4
5 /***************************************************************
6 ***************************************************************
7
8 The logging routines in this package are obsolete.
9 They are replaced by routines in the PO_LOG package.
10
11 For more details on the PO logging strategy, see the document at
12 /podev/po/internal/standards/logging/logging.xml
13
14 ***************************************************************
15 ***************************************************************
16 */
17
18 -----------------------------------------------------------------------------
19 -- Define public procedures.
20 -----------------------------------------------------------------------------
21
22
23
24 -- Obsolete.
25 -- See PO_LOG.
26 FUNCTION is_debug_stmt_on
27 RETURN BOOLEAN
28 IS
29 BEGIN
30
31 RETURN(PO_LOG.d_stmt);
32
33 END is_debug_stmt_on;
34
35
36 -- Obsolete.
37 -- See PO_LOG.
38 FUNCTION is_debug_unexp_on
39 RETURN BOOLEAN
40 IS
41 BEGIN
42
43 RETURN(PO_LOG.d_unexp);
44
45 END is_debug_unexp_on;
46
47
48
49
50 -- Obsolete.
51 -- See PO_LOG.
52 PROCEDURE debug_stmt(
53 p_log_head IN VARCHAR2
54 , p_token IN VARCHAR2
55 , p_message IN VARCHAR2
56 )
57 IS
58 BEGIN
59 IF PO_LOG.d_stmt THEN
60 PO_LOG.stmt(p_log_head||'.'||p_token,NULL,p_message);
61 END IF;
62 END debug_stmt;
63
64
65
66 -- Obsolete.
67 -- See PO_LOG.
68 PROCEDURE debug_begin(
69 p_log_head IN VARCHAR2
70 )
71 IS
72 BEGIN
73 IF PO_LOG.d_proc THEN
74 PO_LOG.proc_begin(p_log_head||'.');
75 END IF;
76 END debug_begin;
77
78
79 -- Obsolete.
80 -- See PO_LOG.
81 PROCEDURE debug_end(
82 p_log_head IN VARCHAR2
83 )
84 IS
85 BEGIN
86 IF PO_LOG.d_proc THEN
87 PO_LOG.proc_end(p_log_head||'.');
88 END IF;
89 END debug_end;
90
91
92
93 -- Obsolete.
94 -- See PO_LOG.
95 PROCEDURE debug_var(
96 p_log_head IN VARCHAR2
97 , p_progress IN VARCHAR2
98 , p_name IN VARCHAR2
99 , p_value IN VARCHAR2
100 )
101 IS
102 BEGIN
103 IF PO_LOG.d_stmt THEN
104 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
105 END IF;
106 END debug_var;
107
108
109
110
111 PROCEDURE debug_var(
112 p_log_head IN VARCHAR2
113 , p_progress IN VARCHAR2
114 , p_name IN VARCHAR2
115 , p_value IN NUMBER
116 )
117 IS
118 BEGIN
119 IF PO_LOG.d_stmt THEN
120 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
121 END IF;
122 END debug_var;
123
124
125
126
127 PROCEDURE debug_var(
128 p_log_head IN VARCHAR2
129 , p_progress IN VARCHAR2
130 , p_name IN VARCHAR2
131 , p_value IN DATE
132 )
133 IS
134 BEGIN
135 IF PO_LOG.d_stmt THEN
136 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
137 END IF;
138 END debug_var;
139
140
141
142
143 PROCEDURE debug_var(
144 p_log_head IN VARCHAR2
145 , p_progress IN VARCHAR2
146 , p_name IN VARCHAR2
147 , p_value IN BOOLEAN
148 )
149 IS
150 BEGIN
151 IF PO_LOG.d_stmt THEN
152 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
153 END IF;
154 END debug_var;
155
156
157
158
159 PROCEDURE debug_var(
160 p_log_head IN VARCHAR2
161 , p_progress IN VARCHAR2
162 , p_name IN VARCHAR2
163 , p_value IN po_tbl_number
164 )
165 IS
166 BEGIN
167 IF PO_LOG.d_stmt THEN
168 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
169 END IF;
170 END debug_var;
171
172
173
174
175 PROCEDURE debug_var(
176 p_log_head IN VARCHAR2
177 , p_progress IN VARCHAR2
178 , p_name IN VARCHAR2
179 , p_value IN po_tbl_date
180 )
181 IS
182 BEGIN
183 IF PO_LOG.d_stmt THEN
184 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
185 END IF;
186 END debug_var;
187
188
189
190
191 PROCEDURE debug_var(
192 p_log_head IN VARCHAR2
193 , p_progress IN VARCHAR2
194 , p_name IN VARCHAR2
195 , p_value IN po_tbl_varchar1
196 )
197 IS
198 BEGIN
199 IF PO_LOG.d_stmt THEN
200 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
201 END IF;
202 END debug_var;
203
204
205
206
207 PROCEDURE debug_var(
208 p_log_head IN VARCHAR2
209 , p_progress IN VARCHAR2
210 , p_name IN VARCHAR2
211 , p_value IN po_tbl_varchar5
212 )
213 IS
214 BEGIN
215 IF PO_LOG.d_stmt THEN
216 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
217 END IF;
218 END debug_var;
219
220
221
222
223 PROCEDURE debug_var(
224 p_log_head IN VARCHAR2
225 , p_progress IN VARCHAR2
226 , p_name IN VARCHAR2
227 , p_value IN po_tbl_varchar30
228 )
229 IS
230 BEGIN
231 IF PO_LOG.d_stmt THEN
232 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
233 END IF;
234 END debug_var;
235
236
237
238
239 PROCEDURE debug_var(
240 p_log_head IN VARCHAR2
241 , p_progress IN VARCHAR2
242 , p_name IN VARCHAR2
243 , p_value IN po_tbl_varchar100
244 )
245 IS
246 BEGIN
247 IF PO_LOG.d_stmt THEN
248 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
249 END IF;
250 END debug_var;
251
252
253
254
255 PROCEDURE debug_var(
256 p_log_head IN VARCHAR2
257 , p_progress IN VARCHAR2
258 , p_name IN VARCHAR2
259 , p_value IN po_tbl_varchar2000
260 )
261 IS
262 BEGIN
263 IF PO_LOG.d_stmt THEN
264 PO_LOG.stmt(p_log_head||'.'||p_progress,NULL,p_name,p_value);
265 END IF;
266 END debug_var;
267
268
269
270
271 -- Obsolete.
272 -- See PO_LOG.
273 PROCEDURE debug_exc(
274 p_log_head IN VARCHAR2
275 , p_progress IN VARCHAR2
276 )
277 IS
278 BEGIN
279 IF PO_LOG.d_exc THEN
280 PO_LOG.exc(p_log_head||'.'||p_progress,NULL,NULL);
281 END IF;
282 END debug_exc;
283
284
285
286 -- Obsolete.
287 -- See PO_LOG.
288 PROCEDURE debug_err(
289 p_log_head IN VARCHAR2
290 , p_progress IN VARCHAR2
291 )
292 IS
293 BEGIN
294 IF PO_LOG.d_exc THEN
295 PO_LOG.exc(p_log_head||'.'||p_progress,NULL,NULL);
296 END IF;
297 END debug_err;
298
299
300
301
302 -- Obsolete.
303 -- See PO_LOG.
304 PROCEDURE debug_unexp(
305 p_log_head IN VARCHAR2
306 , p_progress IN VARCHAR2
307 , p_message IN VARCHAR2
308 DEFAULT NULL
309 )
310 IS
311 BEGIN
312 IF PO_LOG.d_exc THEN
313 PO_LOG.exc(p_log_head||'.'||p_progress,NULL,p_message);
314 END IF;
315
316 EXCEPTION
317 WHEN OTHERS THEN
318 NULL;
319
320 END debug_unexp;
321
322
323
324
325 -- Obsolete.
326 -- See PO_LOG.
327 PROCEDURE debug_table(
328 p_log_head IN VARCHAR2
329 , p_progress IN VARCHAR2
330 , p_table_name IN VARCHAR2
331 , p_rowid_tbl IN po_tbl_varchar2000
332 , p_column_name_tbl IN po_tbl_varchar30
333 DEFAULT NULL
334 , p_table_owner IN VARCHAR2
335 DEFAULT NULL
336 )
337 IS
338 BEGIN
339 PO_LOG.stmt_table(p_log_head||'.'||p_progress,NULL,
340 p_table_name,p_rowid_tbl,p_column_name_tbl);
341 END debug_table;
342
343
344
345
346 -- Obsolete.
347 -- See PO_LOG.
348 PROCEDURE debug_session_gt(
349 p_log_head IN VARCHAR2
350 , p_progress IN VARCHAR2
351 , p_key IN NUMBER
352 , p_column_name_tbl IN po_tbl_varchar30
353 DEFAULT NULL
354 )
355 IS
356 BEGIN
357 PO_LOG.stmt_session_gt(p_log_head||'.'||p_progress,NULL,
358 p_key,p_column_name_tbl);
359 END debug_session_gt;
360
361
362
363
364 -------------------------------------------------------------------------------
365 --Start of Comments
366 --Name: handle_unexp_error
367 --Pre-reqs:
368 -- None.
369 --Modifies:
370 -- API message list
371 -- FND_LOG_MESSAGES
372 --Locks:
373 -- None.
374 --Function:
375 -- Adds an exception message to the standard API message list
376 -- and to the FND log, when appropriate.
377 --Parameters:
378 --IN:
379 --p_pkg_name
380 -- Name of the PL/SQL package that encountered the error.
381 --p_proc_name
382 -- Name of the PL/SQL procedure that encountered the error.
383 --p_progress
384 -- Label indicating the location within the procedure.
385 --p_add_to_msg_list
386 -- Indicates whether or not an exception message should be added
387 -- to the API message list.
388 -- TRUE - add a message to the list
389 -- FALSE - don't add a message to the list
390 -- NULL - use FND standard routines to determine whether or not
391 -- to add a message to the list
392 --End of Comments
393 -------------------------------------------------------------------------------
394 PROCEDURE handle_unexp_error(
395 p_pkg_name IN VARCHAR2
396 , p_proc_name IN VARCHAR2
397 , p_progress IN VARCHAR2
398 DEFAULT NULL
399 , p_add_to_msg_list IN BOOLEAN
400 DEFAULT NULL
401 )
402 IS
403
404 l_add_to_msg_list BOOLEAN := p_add_to_msg_list;
405
406 BEGIN
407
408 IF (l_add_to_msg_list IS NULL) THEN
409 l_add_to_msg_list :=
410 FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR);
411 END IF;
412
413 -- Add the unexpected error to the standard API message list.
414 IF l_add_to_msg_list THEN
415 FND_MSG_PUB.add_exc_msg(
416 p_pkg_name => p_pkg_name
417 , p_procedure_name => p_proc_name
418 );
419 END IF;
420
421 -- Log a debug message.
422 IF PO_LOG.d_unexp THEN
423 debug_unexp(
424 p_log_head => 'po.plsql.'||UPPER(p_pkg_name)||'.'||UPPER(p_proc_name)
425 , p_progress => p_progress
426 );
427 END IF;
428
429 EXCEPTION
430 WHEN OTHERS THEN
431 NULL;
432
433 END handle_unexp_error;
434
435 -- Bug 3570793 START
436 -------------------------------------------------------------------------------
437 --Start of Comments
438 --Name: write_msg_list_to_file
439 --Pre-reqs:
440 -- None.
441 --Modifies:
442 -- FND_LOG_MESSAGES
443 --Locks:
444 -- None.
445 --Function:
446 -- Writes the messages on the API message list (FND_MSG_PUB) to the concurrent
447 -- program log file output, and to the FND log, if enabled.
448 --Parameters:
449 --IN:
450 --p_log_head
451 -- Module value to pass to FND_LOG, indicating the package, procedure, etc.
452 --p_progress
453 -- Label indicating the location within the procedure.
454 --End of Comments
455 -------------------------------------------------------------------------------
456 PROCEDURE write_msg_list_to_file (
457 p_log_head IN VARCHAR2
458 , p_progress IN VARCHAR2
459 ) IS
460 l_msg VARCHAR2(2000);
461 l_module VARCHAR2(200);
462 BEGIN
463 l_module := p_log_head || '.' || p_progress;
464
465 FOR i IN 1..FND_MSG_PUB.count_msg LOOP
466 l_msg := substrb ( FND_MSG_PUB.get(p_msg_index => i,
467 p_encoded => FND_API.G_FALSE),
468 1, 2000 );
469
470 -- Write the message to the concurrent program log file.
471 FND_FILE.put_line ( FND_FILE.LOG,
472 substrb(l_module || ': ' || l_msg, 1, 2000) );
473
474 -- Write the message to the FND log, if enabled.
475 IF PO_LOG.d_unexp THEN
476 IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_UNEXPECTED) THEN
477 FND_LOG.string ( log_level => FND_LOG.level_unexpected,
478 module => l_module,
479 message => l_msg );
480 END IF;
481 END IF;
482 END LOOP;
483
484 EXCEPTION
485 WHEN OTHERS THEN
486 NULL; -- ignore any exceptions
487 END write_msg_list_to_file;
488 -- Bug 3570793 END
489
490 -------------------------------------------------------------------------------
491 -------------------------------------------------------------------------------
492 -- 8/20/03: The following procedures are non-standard comformant,
493 -- and should not be used.
494 -- They exist for legacy code.
495 -------------------------------------------------------------------------------
496 -------------------------------------------------------------------------------
497
498
499 /*=========================================================================
500
501 PROCEDURE NAME: PUT_LINE()
502
503 ===========================================================================*/
504
505 -- Write debug messages to file or standard out based on the value of package
506 -- variable PO_DEBUG.write_to_file.
507 --
511
508 -- Use PO_DEBUG.set_file_io( TRUE / FALSE ) to set this variable.
509
510 PROCEDURE PUT_LINE (v_line in varchar2) IS
512 x_temp varchar2(10) := 'NULL';
513
514 BEGIN
515
516 if PO_DEBUG.write_to_file is NULL then
517
518 -- Do nothing.
519 null;
520
521 elsif PO_DEBUG.write_to_file then
522
523 -- write to system log file
524 -- Assuming all the rules for utl_file have been properly followed
525 -- the following call should write to a system generated log file.
526
527 x_temp := 'FILE';
528 FND_FILE.PUT_LINE(FND_FILE.LOG, v_line);
529
530 else
531
532 -- write to standard out
533 x_temp := 'STD OUT';
534 --dbms_output.put_line(v_line);
535
536 end if;
537
538 EXCEPTION
539
540 when others then
541 -- do not raise any exception
542 --dbms_output.put_line('*** ERROR WRITING TO FILE - Check UTL_FILE_DIR Parameter in init.ora *** : ' || x_temp);
543 PO_DEBUG.write_to_file := NULL; -- Reset the file I/O flag so that the package is not invoked again
544 -- May run into rollback problems if the FND_FILE package is called again
545 -- because it performs an implicit commit.
546
547 END PUT_LINE;
548
549 -- Set flag for writing to file or standard out
550
551 PROCEDURE set_file_io(flag BOOLEAN) IS
552
553 BEGIN
554
555 PO_DEBUG.write_to_file := flag;
556
557 /* Bug 1014430 : dbms_output should be enabled conditionally only if the
558 flag is false.
559 */
560
561 if (flag or flag is null) then
562 dbms_output.disable;
563 else
564 dbms_output.enable(1000000);
565 end if;
566
567 EXCEPTION
568 when others then null;
569
570 END set_file_io;
571
572
573
574
575 END PO_DEBUG;