This will log to a file for web services. You need Grouper WS v2.3.0+ patch 12.
The log will have one entry for a request.
Configure
In the log4j.properties, configure the web services to a file for debug
log4j.appender.grouper_ws = org.apache.log4j.DailyRollingFileAppender log4j.appender.grouper_ws.File = ${grouper.home}logs/grouper_ws.log log4j.appender.grouper_ws.DatePattern = '.'yyyy-MM-dd log4j.appender.grouper_ws.MaxBackupIndex = 30 log4j.appender.grouper_ws.layout = org.apache.log4j.PatternLayout log4j.appender.grouper_ws.layout.ConversionPattern = %d{ISO8601}: %m%n log4j.appender.grouper_ws_longRunning = org.apache.log4j.DailyRollingFileAppender log4j.appender.grouper_ws_longRunning.File = ${grouper.home}logs/grouper_ws_longRunning.log log4j.appender.grouper_ws_longRunning.DatePattern = '.'yyyy-MM-dd log4j.appender.grouper_ws_longRunning.MaxBackupIndex = 30 log4j.appender.grouper_ws_longRunning.layout = org.apache.log4j.PatternLayout log4j.appender.grouper_ws_longRunning.layout.ConversionPattern = %d{ISO8601}: %m%n # ws logs log4j.logger.edu.internet2.middleware.grouper.ws.util.GrouperWsLog = DEBUG, grouper_ws log4j.additivity.edu.internet2.middleware.grouper.ws.util.GrouperWsLog = false log4j.logger.edu.internet2.middleware.grouper.ws.util.GrouperWsLongRunningLog = DEBUG, grouper_ws_longRunning log4j.additivity.edu.internet2.middleware.grouper.ws.util.GrouperWsLongRunningLog = false
Example
2018-05-01 18:57:43,764: start: 18:57:43.638, remoteAddr: 127.0.0.1, requestUrl: http://localhost:8088/grouperWs/servicesRest/v2_3_000/permissionAssignments, method: getPermissionAssignments, clientVersion: 2.3.0, immediateOnly: false, includeAssignmentsOnAssignments: false, includeAttributeAssignments: false, includeAttributeDefNames: false, includeGroupDetail: false, includeLimits: false, includePermissionAssignDetail: false, includeSubjectDetail: false, pointInTimeFrom: 2018-05-01 18:57:43.076, pointInTimeTo: 2018-05-01 18:57:43.076, wsAttributeDefLookups: Array size: 1: [0]: name: aStem:permissionDef, userIdLoggedIn: GrouperSystem, userIdLoggedInSource: g:isa, success: T, resultCode: SUCCESS, serverVersion: 2.3.0, resultsSize: 0, elapsedMillis: 126 2018-05-01 21:50:48,283: start: 21:50:48.272, remoteAddr: 127.0.0.1, requestUrl: http://localhost:8088/grouperWs/servicesRest/v2_3_000/attributeDefNames, method: findAttributeDefNames, clientVersion: 2.3.0, wsAttributeDefNameLookups: Array size: 2: [0]: name: aStem1:newAttributeDefName1, [1]: name: aStem1:newAttributeDefName2, userIdLoggedIn: GrouperSystem, userIdLoggedInSource: g:isa, success: T, resultCode: SUCCESS, serverVersion: 2.3.0, resultsSize: 2, elapsedMillis: 11 2018-05-01 19:09:56,943: start: 19:09:56.901, remoteAddr: 127.0.0.1, requestUrl: http://localhost:8088/grouperWs/servicesRest/v2_3_000/memberships, method: getMemberships, clientVersion: 2.3.0, includeGroupDetail: false, includeSubjectDetail: false, subjectAttributeNames: Array size: 2: [0]: a, [1]: name, wsGroupLookups: Array size: 2: [0]: name: aStem:aGroup, [1]: name: aStem:aGroup2, wsMemberFilter: All, userIdLoggedIn: GrouperSystem, userIdLoggedInSource: g:isa, success: T, resultCode: SUCCESS, serverVersion: 2.3.0, resultsSize: 4, elapsedMillis: 41