WebObjects/EOF/Using EOF/Logging

Overview edit

You can turn SQL logging on when launching by using -DEOAdaptorDebugEnabled=true or EOAdaptorDebugEnabled YES. However, this can slam out a ton of SQL. While this is useful for some debugging it is way too much to sift through when trying to analyze a particular problem.

You can use this method to selectively enable and disable SQL logging:

 public static void logSQL(boolean shouldLog) {
   if (shouldLog) {
       NSLog.allowDebugLoggingForGroups(NSLog.DebugGroupSQLGeneration |
                                        NSLog.DebugGroupDatabaseAccess | 
                                        NSLog.DebugGroupEnterpriseObjects);
   } else {
       NSLog.refuseDebugLoggingForGroups(NSLog.DebugGroupSQLGeneration | 
                                         NSLog.DebugGroupDatabaseAccess |
                                         NSLog.DebugGroupEnterpriseObjects);
   }
 }

This can be useful for such things as determining what fetches are performed when a page is rendered:

 public void appendToResponse(WOResponse aResponse,
                            WOContext aContext) {
   logSQL(true);
   super.appendToResponse(aResponse, aContext);
   logSQL(false);
 }