Try OpenEdge Now
skip to main content
Debugging and Troubleshooting
Troubleshooting Resources : Log Entry Types Detail : Dynamic object logging : Logging levels for dynamic objects : Verbose logging level (3)
 
Verbose logging level (3)
Setting the logging level to 3 (Verbose), also logs object-pool related information.
First, level 3 adds pool information to the log entry every time a dynamic object is created that is being tracked, except PROCEDURE, MEMPTR, and BROWSE-COLUMN objects. PROCEDUREs always are in the Session pool. MEMPTR and LONGCHAR memory is not stored in a pool. The log entry for BROWSE-COLUMN objects contains the browse name or handle ID information in the creation log entry (as described above), so you can refer back to the browse creation entry to find out which pool contains the object.
Second, level 3 logs an extra entry every time an object-pool is created or deleted. This helps identify when the AVM deletes an object in the course of deleting an object pool, as opposed to when the application deletes the object explicitly.
There are two formats for the messages generated at level VERBOSE, depending on the action:
*Format 1 — OpenEdge logs the following when creating or deleting an object pool:
*Action — This is Creating Pool or Deleting Pool.
*Pool name — This is <unnamed>, <Session Pool>, or the name of a named pool.
*PERS — This indicates the pool is persistent. OpenEdge does not log this for Deleting Pool actions.
*Routine name and line number — The routine name is the name of the .p or .w file or method where the AVM created or destroyed the pool. The line number comes from the debugger listing file.
Note: The line number can be the string IMPLICIT for an unnamed widget pool if the pool is created implicitly during the instantiation of a user-defined object.
*FROM routine-nameroutine-name is the name of the .p or .w file or method where the AVM created the object pool. OpenEdge logs this only for the Delete pool.
Here are sample log entries (with the headers suppressed):
Creating pool <unnamed> (my.p Line 2)

Deleting pool mypool (x.p Line 9) FROM x.p

Deleting pool mypool2 (x.p Line 10) FROM y.p
*Format 2 — OpenEdge adds pool information to the Basic log entries when creating and deleting dynamic objects. OpenEdge logs this additional information:
*Pool name — This is <unnamed>, <Session Pool>, or the name of a named pool.
*FROM routinenameroutinename is the name of the .p or .w file or method that created the object pool. OpenEdge logs this only when the pool is not persistent and not the Session Pool.
Here are some sample log entries (with headers suppressed):
[05/10/31@14:07:15.892-0400] P-002702 T-002867 3 4GL DYNOBJECTS Created
MENU Handle:1098 (x.p Line 4) Pool:<unnamed> FROM x.p
[05/10/31@14:07:15.892-0400] P-002702 T-002867 3 4GL DYNOBJECTS Created
MENU Handle:1098 (x.p Line 4) Pool:<unnamed> FROM z.p
[05/10/31@14:07:15.892-0400] P-002702 T-002867 3 4GL DYNOBJECTS Deleted
MENU Handle:1098 (x.p Line 5) Pool:mywp FROM x.p
[05/10/31@14:07:15.892-0400] P-002702 T-002867 3 4GL DYNOBJECTS Deleted
MENU Handle:1098 (x.p Line 5) Pool:myperswp FROM y.p
The following excerpt is from a log file (with headers suppressed) showing an example of how the pool information relates to the other messages:
Creating pool mypool (x.p Line 2)
Created        MENU             Handle:1098 (x.p Line 4) Pool:mypool FROM x.p
Deleted        MENU             Handle:1098 (x.p Line 5)
Created        TOGGLE-BOX       Handle:1099 (x.p Line 7) Pool:mypool FROM x.p
Deleting pool mypool (x.p Line 9) FROM x.p
Deleted        TOGGLE-BOX       Handle:1099 (x.p Line 9) POOLDEL