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