DBA Data[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;