Skip to content

Commit 930d0aa

Browse files
committed
put logging inside try-catch block to avoid crashing for logging errors.
1 parent 6a5d3d3 commit 930d0aa

File tree

1 file changed

+53
-39
lines changed

1 file changed

+53
-39
lines changed

oauth2_http/java/com/google/auth/oauth2/LoggingUtils.java

Lines changed: 53 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -89,56 +89,70 @@ static void logWithMDC(
8989

9090
static void logRequest(HttpRequest request, Logger logger, String message) {
9191
if (logger.isInfoEnabled()) {
92-
Map<String, String> loggingDataMap = new HashMap<>();
93-
loggingDataMap.put("request.method", request.getRequestMethod());
94-
loggingDataMap.put("request.url", request.getUrl().toString());
95-
96-
Map<String, Object> headers = new HashMap<>();
97-
request
98-
.getHeaders()
99-
.forEach(
100-
(key, val) -> {
101-
if ("authorization".equals(key)) {
102-
String hashedVal = calculateSHA256Hash(String.valueOf(val));
103-
headers.put(key, hashedVal);
104-
} else {
105-
headers.put(key, val);
106-
}
107-
});
108-
loggingDataMap.put("request.headers", headers.toString());
109-
110-
if (request.getContent() != null && logger.isDebugEnabled()) {
111-
// are payload always GenericData? If so, can parse and store in json
112-
GenericData data = (GenericData) ((UrlEncodedContent) request.getContent()).getData();
113-
114-
Map<String, String> contextMap = parseGenericData(data);
115-
loggingDataMap.put("request.payload", contextMap.toString());
116-
117-
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.DEBUG, loggingDataMap, message);
118-
} else {
119-
120-
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.INFO, loggingDataMap, message);
92+
try {
93+
Map<String, String> loggingDataMap = new HashMap<>();
94+
loggingDataMap.put("request.method", request.getRequestMethod());
95+
loggingDataMap.put("request.url", request.getUrl().toString());
96+
97+
Map<String, Object> headers = new HashMap<>();
98+
request
99+
.getHeaders()
100+
.forEach(
101+
(key, val) -> {
102+
if ("authorization".equals(key)) {
103+
String hashedVal = calculateSHA256Hash(String.valueOf(val));
104+
headers.put(key, hashedVal);
105+
} else {
106+
headers.put(key, val);
107+
}
108+
});
109+
loggingDataMap.put("request.headers", headers.toString());
110+
111+
if (request.getContent() != null && logger.isDebugEnabled()) {
112+
// are payload always GenericData? If so, can parse and store in json
113+
GenericData data = (GenericData) ((UrlEncodedContent) request.getContent()).getData();
114+
115+
Map<String, String> contextMap = parseGenericData(data);
116+
loggingDataMap.put("request.payload", contextMap.toString());
117+
118+
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.DEBUG, loggingDataMap, message);
119+
} else {
120+
121+
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.INFO, loggingDataMap, message);
122+
}
123+
} catch (Exception e) {
124+
logger.error("Error logging request: ", e);
121125
}
122126
}
123127
}
124128

125129
static void logResponse(HttpResponse response, Logger logger, String message) {
126130
if (logger.isInfoEnabled()) {
127-
Map<String, String> responseLogDataMap = new HashMap<>();
128-
responseLogDataMap.put("response.status", String.valueOf(response.getStatusCode()));
129-
responseLogDataMap.put("response.status.message", response.getStatusMessage());
130-
131-
Map<String, Object> headers = new HashMap<>();
132-
response.getHeaders().forEach((key, val) -> headers.put(key, val));
133-
responseLogDataMap.put("response.headers", headers.toString());
134-
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.INFO, responseLogDataMap, message);
131+
try {
132+
Map<String, String> responseLogDataMap = new HashMap<>();
133+
responseLogDataMap.put("response.status", String.valueOf(response.getStatusCode()));
134+
responseLogDataMap.put("response.status.message", response.getStatusMessage());
135+
136+
Map<String, Object> headers = new HashMap<>();
137+
response.getHeaders().forEach((key, val) -> headers.put(key, val));
138+
responseLogDataMap.put("response.headers", headers.toString());
139+
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.INFO, responseLogDataMap, message);
140+
} catch (Exception e) {
141+
142+
logger.error("Error logging response: ", e);
143+
}
135144
}
136145
}
137146

138147
static void logGenericData(GenericData genericData, Logger logger, String message) {
139148
if (logger.isDebugEnabled()) {
140-
Map<String, String> contextMap = parseGenericData(genericData);
141-
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.DEBUG, contextMap, message);
149+
try {
150+
151+
Map<String, String> contextMap = parseGenericData(genericData);
152+
LoggingUtils.logWithMDC(logger, org.slf4j.event.Level.DEBUG, contextMap, message);
153+
} catch (Exception e) {
154+
logger.error("Error logging GenericData: ", e);
155+
}
142156
}
143157
}
144158

0 commit comments

Comments
 (0)